单击ASP.NET按钮时在Gridview中启用链接按钮

时间:2013-08-20 15:15:17

标签: c# asp.net gridview

我有一个gridview,显示带有一些链接按钮的记录。

我想要的是在点击我的ASP.NET ButtonStart时启用Gridview中的LinkBut​​ton

<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
}

1 个答案:

答案 0 :(得分:2)

只需遍历网格视图中的行,并在每行中启用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;
            }
        }            
    }
}