如何禁用 LnkBut​​ton 上的超链接?

How to disable hyperlink on LnkButton?

我有 table 的数据。其中一个字段是 UName。 UName 有超链接。我想在某些行中禁用它。

我在 ItemTemplate 中有两个 LnkBut​​ton。 当我删除 ItemTemplate 中的第一个 LnkBut​​ton 时,UName 字段的超链接被删除。 因为我不想为每一行禁用它,所以我想找到一种方法来禁用 CodeBehind 中的超链接。

<telerik:GridTemplateColumn DataField="UName" GroupByExpression="UName" UniqueName="UName"
                                            InitializeTemplatesFirst="false" HeaderText="Name" CurrentFilterFunction="Contains">
                                            <HeaderStyle />
                                            <HeaderTemplate>
                                                <span onmouseover='ShowColumnHeaderMenu(event,"UName")'>Name
                                                </span>
                                                <asp:Image ID="imgHeader1" ImageUrl="" Visible="false" runat="server" />
                                            </HeaderTemplate>
                                            <ItemTemplate>
                                                <LnkButton:LnkButton ID="HypUName" runat="server" style="white-space: nowrap" Text='<%# Server.HtmlEncode(Eval("UName").ToString()) %>'></LnkButton:LnkButton>
                                                 <LnkButton:LnkButton ID="LnkButton1" runat="server" Text='<%# Eval("UName").ToString() %>' Menuid="5"></LnkButton:LnkButton>
                                            </ItemTemplate>
                                        </telerik:GridTemplateColumn>

总而言之,我的目标是从 CodeBehind 禁用 ID 为“HypUName”的 LnkBut​​ton。

您需要循环查找控件并禁用它,如果它满足您正在寻找的任何条件。下面的例子

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
 {
   // look for your control  here and disable it if needed
    LinkButton lnk= (LinkButton)e.Row.FindControl("HypUName");
    
     if(lnk != null)
     {
       // do your condition check here
        //if passes disable link 
       lnk.Enabled = false;
     }
  }
}