0

我在 ajax 更新面板中有一个 gridview。我已将不同的按钮事件设置为 AsyncPostBackTriggers,但我希望选择按钮打开子网页,因此它必须是回发。我尝试了以下方法:

<Triggers>
      <asp:AsyncPostBackTrigger ControlID="gvClients" EventName="RowCancelingEdit" />
      <asp:AsyncPostBackTrigger ControlID="gvClients" EventName="RowEditing" />
      <asp:AsyncPostBackTrigger ControlID="gvClients" EventName="RowUpdated" />
      <asp:AsyncPostBackTrigger ControlID="gvClients" EventName="RowUpdating" />
      <asp:AsyncPostBackTrigger ControlID="gvClients" EventName="Sorted" />
      <asp:AsyncPostBackTrigger ControlID="gvClients" EventName="Sorting" />
      <asp:PostBackTrigger ControlID="gvClients" />
</Triggers>

我收到以下错误:“System.ArgumentException:无法通过 RegisterAsyncPostBackControl 和 RegisterPostBackControl 注册 ID 为 'gvClients' 的控件。如果与目标控件关联的触发器有冲突,则可能发生这种情况。”

我尝试从后面的代码中访问选择按钮并将其设置为触发器。

这是代码:

   protected void gvClients_RowDataBound(object sender, GridViewRowEventArgs e)
    {
       if (e.Row.RowType == DataControlRowType.DataRow)
        {     
            Button btnDtls = (Button)e.Row.Cells[0].Controls[2];
            string btnDtlsId = btnDtls.ID;
            PostBackTrigger trigger = new PostBackTrigger();
            trigger.ControlID = btnDtlsId;
            UpdatePanel1.Triggers.Add(trigger);
        }
    }

在调试中,我看到按钮的 ID 是“ctl01”,但出现此错误:“在 UpdatePanel 'UpdatePanel1' 中找不到触发器的 ID 为 'ctl01' 的控件”。有没有办法访问控制字段选择按钮并将其设置为 PostBackTrigger?

4

1 回答 1

0

由于按钮位于模板内,因此其最终 id 不同,您可以从 UniqueID 属性中获取它。 http://msdn.microsoft.com/en-us/library/system.web.ui.control.uniqueid.aspx

于 2012-07-19T11:00:59.757 回答