rowcommand in dynamically created gridviews

本文关键字:gridviews created dynamically in rowcommand | 更新日期: 2023-09-27 18:29:55

我遇到了严重的网格视图问题。我动态创建的网格视图中的rowcommand没有启动。

            Controls_ucOffice userControl = (Controls_ucOffice)LoadControl("~/Controls/ucOffice.ascx");
            userControl.ID = *Unique ID*
            GridView gvPhones =(GridView) userControl.FindControl("myGridView");
            gvPhones.DataSource = cPhoneList;
            gvPhones.DataBind();
            placeholder1.Controls.Add(userControl);

我正在制作其中的几个控件,它们在网格视图中看起来都很好,数据也很正确。这是通过点击按钮而不是页面加载来完成的。

我知道它们会在回发时消失,所以我把它们放在了更新面板中,以避免丢失网格视图(填充它们需要很长时间)

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:GridView runat="server" ID="gvPhones" AutoGenerateColumns="false" OnRowDataBound="gvPhones_RowDataBound"
            OnRowCommand="gvPhones_RowCommand">
</ContentTemplate>
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="gvPhones" EventName="RowCommand" />
</Triggers>

在将它们放在更新面板中后,第一次单击时什么也没发生,第二次单击会使所有网格视图都消失(就像在回发时一样)

以下rowcommand方法中的断点从未到达

protected void gvPhones_RowCommand(object sender, GridViewCommandEventArgs e)
{
    //do stuff
}

rowcommand in dynamically created gridviews

如果您在页面加载中绑定网格,如下面的

if(!IsPostBack)
{
    BindGrid();
}

然后从中取出BindGrid()!IsPostBack。意味着如果在运行时创建网格,则需要在每次回发时重新绑定()网格。