如果一行包含空单元格,如何在gridview中显示和隐藏按钮字段

本文关键字:gridview 显示 字段 按钮 隐藏 一行 单元格 包含空 如果 | 更新日期: 2023-09-27 18:12:27

我有一个gridview在我的asp.net应用程序。例如

SN名称日期动作

1麦克按钮(做某事)

这只是我的gridview中的一行。我希望每行有一个空单元格,按钮字段单元格的行应该显示。如果该行中没有空单元格,按钮应该隐藏。我得到我的代码是,所有的按钮可见变为假,这是我不想要的。

下面是我的

代码
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" Height="326px" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="5" style="text-align: left; margin-left: 169px" Width="1069px" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" OnRowEditing="GridView1_RowEditing">                       
<Columns>
  <asp:BoundField HeaderText="S/N" DataField="SN" />
  <asp:BoundField HeaderText="First Name" DataField="FirstName" />
  <asp:BoundField HeaderText="Address" DataField="Address" />
  <asp:BoundField HeaderText="Phone Number" DataField="PhoneNumber" />
  <asp:BoundField HeaderText="Sex" DataField="Sex" />
  <asp:BoundField HeaderText="Reason" DataField="Reason" />
  <asp:BoundField HeaderText="SignIn" DataField="SignIn_Time" />
  <asp:BoundField HeaderText="SignOut" DataField="Signout_Time" />
<asp:TemplateField HeaderText="Action" Visible="True">
   <ItemTemplate>
      <asp:Button ID="out" runat="server" Text="Sign out" CommandName="SignOut"  CommandArgument='<%# Eval("SN") %>' CssClass="active"/>
   </ItemTemplate>
</asp:TemplateField>

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
    for (int i =0 ; i < e.Row.Cells.Count; i ++)
    {
      if (e.Row.Cells[i].Text == "&nbsp;")
      {
        Button status = (Button)e.Row.FindControl("out");
        status.Visible = true;
      }
      else
      {
        Button status = (Button)e.Row.FindControl("out");
        status.Visible = false;
      }
    }
  }  
}

如果一行包含空单元格,如何在gridview中显示和隐藏按钮字段

试试下面的代码

string.IsNullOrEmpty(e.Row.Cells[i].Text)

e.Row.Cells[i].Text.Equals("&nbsp;")

您正在做的是检查整个网格内的所有单元格。修复方法是检查每个RowDataBound事件中的所有单元格。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var status = (Button) e.Row.FindControl("out");
        // Show button if at least one cell is empty.
        status.Visible = e.Row.Cells.Cast<TableCell>()
            .Any(cell => string.IsNullOrEmpty(cell.Text));
    }
}

通常,数据库不应该为空数据返回&nbsp;,除非您有意将它们存储在数据库中。