在RowDataBound事件中启用或禁用HyperLink

时间:2014-08-26 09:36:05

标签: c# asp.net

我的代码有问题。我需要根据从数据库中提取的值,在ASP.NET GridView中的RowDataBound事件中启用或禁用 HyperLink

如果我的数据库的字段File的值不是null,则 HyperLink 是可见的,否则不可见。在GridView中,我没有计划显示字段File的值。

我尝试使用这些解决方案但没有成功,因为我有这个错误。

  

编译器错误消息:CS1502:' string.IsNullOrEmpty(string)'的最佳重载方法匹配有一些无效的论点

这是我的代码:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink Srl = (HyperLink)e.Row.FindControl("Srl");     

        foreach (string color in colorList)
        {
            if (!string.IsNullOrEmpty(DataBinder.Eval(e.Row.DataItem, "File")))
            {
                Srl.Visible = true;
            }
        }
    }
}

3 个答案:

答案 0 :(得分:0)

DataBinder.Eval返回一个对象。您需要将其转换为String

试试这个:

if (!string.IsNullOrEmpty(Convert.ToString(DataBinder.Eval(e.Row.DataItem, "File"))))
{
    Srl.Visible = true;
}

答案 1 :(得分:0)

<asp:GridView ID="gvList" runat="server" Width="100%" AutoGenerateColumns="False" AllowPaging="false">
    <Columns>
        <asp:TemplateField HeaderText="Select">
            <ItemTemplate>
                <asp:CheckBox ID="cbSelect" runat="server" />
                <asp:HiddenField ID="hfSLNO_BARCODE" runat="server"
                                 Value='<%#Bind("SLNO_BARCODE") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

使用asp:HiddenField作为文件值,并在行数据绑定事件中使用它。

答案 2 :(得分:0)

void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink Srl = (HyperLink)e.Row.FindControl("Srl");     

        foreach (string color in colorList)
        {
            string str = (string)DataBinder.Eval(e.Row.DataItem, "File");

            //then you can check
            if (!String.IsNullorEmpty(str ))
            {
                Srl.Visible = true;
            }
        }
    }
 }