簡體   English   中英

為什么rowdatabound在gridview中找不到鏈接按鈕?

[英]Why rowdatabound can't find a link button in gridview?

我試圖通過RowDataBound從gridview獲取鏈接按鈕,但是它返回null,為什么? 這個名字是正確的。 即使您可以在代碼中看到,但仍然無法正常工作。

網格視圖:

     <asp:GridView ID="grdViewWorks" OnRowDataBound="grdViewWorks_RowDataBound" runat="server" OnRowCommand="grdViewWorks_RowCommand" AutoGenerateColumns="false" EmptyDataText="No Data Found"
CssClass="table table-responsive table-bordered table-striped">
    <Columns>
        <asp:TemplateField HeaderText="Work No">
            <ItemTemplate>
                <asp:Label ID="lblWorkNo" runat="server" Text='<%# Eval("WorkNo") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="NIT No">
            <ItemTemplate>
                <asp:Label ID="lblNITNo" runat="server" Text='<%# Eval("NIT_No") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="WorkName" HeaderText="Work Name" />
        <asp:BoundField DataField="OpeningDate" HeaderText="Opening Date" />
        <asp:BoundField DataField="OpeningTime" HeaderText="Opening Time" />
        <asp:BoundField DataField="OrganizationName" HeaderText="Organization" />
        <asp:BoundField DataField="OfficeName" HeaderText="Office" />
        <asp:TemplateField HeaderText="Show Contractors">
            <ItemTemplate>
                <asp:LinkButton ID="btnShowContractors" runat="server" Text="Show Contractors"
                    OnClick="btnShowContractors_Click"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

的.cs

protected void grdViewWorks_RowDataBound(object sender, GridViewRowEventArgs e)
{
    try
    {
        LinkButton lb = e.Row.FindControl("btnShowContractors") as LinkButton;
        ScriptManager.GetCurrent(this).RegisterPostBackControl(lb);
    }
    catch (Exception ex)
    {

        Utility.Msg_Error(this.Master, ex.Message);
    }
}

lb始終為空。 為什么呢

在將任何內容添加到rowdatabound事件之前,您必須使用此條件

  if (e.Row.RowType == DataControlRowType.DataRow)
    {
       LinkButton lb = e.Row.FindControl("btnShowContractors") as LinkButton;
        ScriptManager.GetCurrent(this).RegisterPostBackControl(lb);
     }

試試這個

if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lb = e.Row.FindControl("btnShowContractors") as LinkButton;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM