根据数据库表列值禁用gridview行

Roo*_*ney 1 c# sql asp.net gridview

我有一个从数据库表加载的gridview.表中有一列名为"valid",其值为"Y"或"N".现在,我想要做的是,检查'valid'的值是否为Y,然后在加载gridview时该行中的整个记录​​应显示为禁用.

如何处理?我应该为此编写一个程序,还是可以从后面的代码中完成?

注意:有效列不是gridview的一部分.

शेख*_*ेखर 5

您需要使用RowDataBoundgridview事件来禁用行.
请注意,如果您使用databound columns它然后渲染tr,td然后您需要找到单元格,然后设置禁用属性.

protected void gvEntity_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       //CheckBox cbAttachClrReq = (CheckBox) e.Row.FindControl("chkAdd");
       //check the value here and set enable property
       e.Row.Enabled = false;

    }

}
Run Code Online (Sandbox Code Playgroud)

正如@HanletEscaño建议您可以在同一列中添加字段值,如下所示

<asp:TemplateField>
   <ItemTemplate>
      <<asp:Label ID="lbl1" runat="server" 
             Value='<%# Eval("Name") %>' />
      <asp:HiddenField ID="HiddenField1" runat="server" 
             Value='<%# Eval("valid") %>' />
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

并在row-dataatab事件中获取隐藏字段值,如下所示

protected void gvEntity_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       HiddenField Hf = (HiddenField) e.Row.FindControl("HiddenField1");
       if(Hf.Value=="Y")
           e.Row.Enabled = false;

    }

}
Run Code Online (Sandbox Code Playgroud)