单击ASP.NET按钮时在网格视图中启用链接按钮

本文关键字:按钮 视图 启用 链接 网格 ASP NET 单击 | 更新日期: 2023-09-27 18:28:18

我有一个显示带有一些链接按钮的记录的网格视图。

我想要的是当我的ASP.NET按钮启动被点击时在Gridview 中启用链接按钮

<asp:GridView ID="gvData" runat="server" CellPadding="4" ForeColor="#333333"
 GridLines="None" Width="688px" AllowPaging="True" AllowSorting="True"AutoGenerateColumns="False"
OnRowCommand="gvData_RowCommand" 
OnRowDataBound="gvData_RowDataBound">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
      <asp:BoundField DataField="Id" HeaderText="ID" SortExpression="Id">
         <ItemStyle HorizontalAlign="Center" />
      </asp:BoundField>                        
     <asp:BoundField DataField="Received" HeaderText="Received" SortExpression="Received"
        ReadOnly="true">
       <ItemStyle HorizontalAlign="Center" />
      </asp:BoundField>                                             
     <asp:TemplateField ShowHeader="False">
     <ItemTemplate>
          <asp:LinkButton ID="lbClose" runat="server" CausesValidation="False"      CommandName="CloseClicked" 
          OnClick="CloseClick_Click">Close</asp:LinkButton>                                                             
     </ItemTemplate>                            
      <FooterStyle HorizontalAlign="Center" />
     <ItemStyle HorizontalAlign="Center" />
  </asp:TemplateField>
  </Columns>                   
  </asp:GridView>

  <asp:button runat="server" text="Start" ID="btnStart" />

我知道如何在RowDataBound中禁用它。

protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton lbClose = (LinkButton)e.Row.Cells[5].FindControl("lbClose");
            if (lbClose == null)
            {
                return;
            }

            var lblReceive = (Label)e.Row.FindControl("lblReceive ");               

            if (lblReceive .Text == "" && !IsPostBack)
            {
                lbClose.Enabled = true;
                lbEdit.Enabled = true;
                lbDelete.Enabled = true;
            }
        }
  }

我认为您必须从BtnStart Click事件调用RowDataBound,但不确定。

protected void btnStartTrans_Click(object sender, EventArgs e)
{
      //Enable lblClose in gridview
}

单击ASP.NET按钮时在网格视图中启用链接按钮

只需循环遍历网格视图中的行,并在每行中启用lbClose,如下所示:

protected void btnStartTrans_Click(object sender, EventArgs e)
{
    // Loop through all rows in the grid
    foreach (GridViewRow row in grid.Rows)
    {
        // Only look for `lbClose` in data rows, ignore header and footer rows, etc.
        if (row.RowType == DataControlRowType.DataRow)
        {
            // Find the `lbClose` LinkButton control in the row
            LinkButton theLinkButton = (LinkButton)row.FindControl("lbClose");
            // Make sure control is not null
            if(theLinkButton != null)
            {
                // Enable the link button
                theLinkButton.Enabled = true;
            }
        }            
    }
}