我在ajax更新面板中有一個gridview。我已將不同的按鈕事件設置爲AsyncPostBackTriggers,但我希望選擇按鈕打開一個子頁面,因此它必須是回發。我試過如下:如何使gridView命令字段按鈕進入ajax更新面板PostBackTrigger
<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」但我得到這個錯誤:「ID爲‘ctl01’控制找不到用於UpdatePanel'UpdatePanel1'中的觸發器「。有沒有辦法訪問控制字段選擇按鈕並將其設置爲PostBackTrigger?
該按鈕不在模板中,它是常規的命令字段選擇按鈕。 – 2012-07-19 11:07:06
它不在網格內嗎?網格有模板。如果所有行中的所有按鈕都具有相同的服務器ID,那麼服務器如何區分它們? – 2012-07-19 11:09:03
我試過,但收到以下錯誤:「System.InvalidOperationException:無法爲UpdatePanel'UpdatePanel1'中的觸發器找到帶有ID'ctl00 $ ContentPlaceHolder1 $ gvClients $ ctl02 $ ctl01'的控件。」 – 2012-07-19 11:18:46