0

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 として設定する方法はありますか?

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 に答える