我在 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?