动态创建的网格视图中的rowcommand

时间:2012-04-03 12:33:04

标签: c# asp.net gridview updatepanel postback

我遇到了严重的网格问题。 我动态创建的gridview中的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);

我正在制作其中几个控件,并且它们在gridviews中都显示正常,并且具有正确的数据。 这是通过点击按钮而不是在page_load上完成的。

我知道它们会在回发中消失,因此我将它们放在更新面板中,以避免丢失网格视图(填充它们需要相当长的时间)

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

1 个答案:

答案 0 :(得分:0)

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

if(!IsPostBack)
{
    BindGrid();
}

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