ajax 更新パネルにグリッドビューがあります。さまざまなボタン イベントを AsyncPostBackTriggers として設定しましたが、選択ボタンで子 Web ページを開く必要があるため、ポストバックでなければなりません。私は次のことを試しました:
<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: ID 'gvClients' のコントロールは、RegisterAsyncPostBackControl と RegisterPostBackControl の両方で登録できません。これは、ターゲット コントロールに競合するトリガーが関連付けられている場合に発生する可能性があります。"
コードビハインドからセレクトボタンにアクセスしてトリガーに設定してみました。
これはコードです:
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 として設定する方法はありますか?