禁用C#中超链接上的NavigateUrl属性



我需要禁用 navigateurl hyperlink 在变量 aut aut 的值时零。

我在我的.cs页面的代码范围内尝试过此操作,没有成功,因为启用了 navigateurl 属性 hyperlink 属性,尽管它打开了一个空白页(在窗口弹出窗口上)在浏览器中,单击 imageurl

有人可以帮助我吗?

预先感谢

我的代码下面:

.cs

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {            
        if (aut > 0)
        {
            HyperLink button = (HyperLink)e.Row.FindControl("MMM");
            button.Enabled = true;                
        }
        else
        {
            HyperLink button = (HyperLink)e.Row.FindControl("MMM");
            button.Enabled = false;
            button.NavigateUrl = "";
        }
    }
}

.aspx

<asp:TemplateField HeaderText="MMM" ItemStyle-HorizontalAlign="Center" ItemStyle-CssClass="ddl_Class_new">
    <ItemTemplate>
        <asp:HyperLink ID="MMM" runat="server" NavigateUrl='<%# (String.IsNullOrEmpty(Eval("MMM").ToString()) ? String.Format("http://...?sId={0}&s=2", HttpUtility.UrlEncode(Base64ForUrlEncode(Eval("id").ToString()))) : "") %>'
            ImageUrl='<%#(String.IsNullOrEmpty(Eval("MMM").ToString()) ? "/Images/bullett/redbul.gif" : "/Images/bullett/forestbul.gif")%>'
            ToolTip='<%#(String.IsNullOrEmpty(Eval("MMM").ToString()) ? "Not Exists" : "Exists")%>'
            Target="_blank" BorderStyle="None" ForeColor="Transparent" OnClick="if (!confirm('Confirm ?'))return false;window.open(this.href,'playsample','width=500,height=500,left=100,top=100,scrollbars=yes,dependent=yes,toolbar=no,location=no,status=no,directories=no,menubar=no,status=no,resizable=yes');return false;"
            Enabled='<%#(!String.IsNullOrEmpty(Eval("MMM").ToString()) ? false : true)%>'>
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

您在CodeBehind中的控件上设置的所有属性都被ASPX中的代码覆盖。举例

Enabled='<%#(!String.IsNullOrEmpty(Eval("MMM").ToString()) ? false : true)%>'

我猜想在您开始从事此项目之前,您的ASPX中的所有代码都是由其他人撰写的?如果是这样,最简单的解决方案可能是删除您的gridview1_rowdatabound函数,而是修改&lt;%%>标签内的代码以将行为更改为您需要的内容。

话虽如此,我要说的是,您试图做的实际上更正确。如果您有时间的奢侈,并且不害怕重构现有代码,则可以将所有逻辑移动到GridView1_rowdatabound函数中,然后从您的aspx就是这样:

<asp:TemplateField HeaderText="MMM" ItemStyle-HorizontalAlign="Center" ItemStyle-CssClass="ddl_Class_new">
<ItemTemplate>
    <asp:HyperLink ID="MMM" runat="server">
    </asp:HyperLink>
</ItemTemplate>

当然,正如我所说,您仍然需要重新创建所有这些逻辑,删除了您的gridview1_rowdatabound函数,我不愿意在此处显示。

最新更新