显示和隐藏gridview按钮的基础上,一个单元格的值在同一行

本文关键字:单元格 一行 一个 基础上 gridview 隐藏 显示 按钮 | 更新日期: 2023-09-27 18:12:37

我有一个gridview在我的ASP.NET。在我的gridview列中,我希望每行上的按钮显示或隐藏单元格的值是否为空或null。例如,我想要一个按钮显示在每一行,有Signout_Time为空或空。我写了下面的代码。我遇到的问题是代码以相反的方式工作。按钮显示在具有"Signout_Time"的行上,而没有"Signout_Time"可见性值的行上的按钮变为false。不应该是这样。我也试着改变我的if条件,它仍然不起作用

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
  switch (e.Row.RowType) {
      case DataControlRowType.DataRow:
          DataRowView myDataRowView = (DataRowView)e.Row.DataItem;
          if (String.IsNullOrEmpty(myDataRowView["Signout_Time"].ToString())) {
              Button status = (Button)e.Row.FindControl("out");
              if (status != null) {
                  status.Visible = true;
              }
          }
          break
     }
 }

                    <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") %>'/>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
            <PagerSettings FirstPageText="First" LastPageText="Last" Mode="NumericFirstLast" PageButtonCount="5" />

        </asp:GridView>

显示和隐藏gridview按钮的基础上,一个单元格的值在同一行

你可以直接在GridView模板中设置按钮的可见性:

<asp:Button Visible='<%# string.IsNullOrEmpty(Eval("Signout_Time").ToString()) %>' runat="server" Text="Sign out" ID="out"  CommandName="SignOut" CommandArgument='<%#Eval("SN") %>'/>