2012-07-19 58 views
0

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

回答

0

由於該按鈕位於模板內部,因此其最終的ID不同,您可以從UniqueID屬性中獲取該按鈕。 http://msdn.microsoft.com/en-us/library/system.web.ui.control.uniqueid.aspx

+0

該按鈕不在模板中,它是常規的命令字段選擇按鈕。 – 2012-07-19 11:07:06

+0

它不在網格內嗎?網格有模板。如果所有行中的所有按鈕都具有相同的服務器ID,那麼服務器如何區分它們? – 2012-07-19 11:09:03

+0

我試過,但收到以下錯誤:「System.InvalidOperationException:無法爲UpdatePanel'UpdatePanel1'中的觸發器找到帶有ID'ctl00 $ ContentPlaceHolder1 $ gvClients $ ctl02 $ ctl01'的控件。」 – 2012-07-19 11:18:46

相關問題