2012-04-03 48 views
0

我有嚴重的gridview麻煩。 在我動態創建的gridview中的rowcommand不會觸發。rowcommand動態創建的gridviews

  Controls_ucOffice userControl = (Controls_ucOffice)LoadControl("~/Controls/ucOffice.ascx"); 
      userControl.ID = *Unique ID* 

      GridView gvPhones =(GridView) userControl.FindControl("myGridView"); 
      gvPhones.DataSource = cPhoneList; 
      gvPhones.DataBind(); 

      placeholder1.Controls.Add(userControl); 

我正在做這些控件中的幾個,並且它們在gridviews和正確的數據下都顯得很好。 這是在按鈕單擊上完成的,而不是在page_load上完成的。

我知道他們dissappear回發所以我把他們安置在更新面板,以避免失去GridView的(填充它們需要相當長的一段)

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
    <asp:GridView runat="server" ID="gvPhones" AutoGenerateColumns="false" OnRowDataBound="gvPhones_RowDataBound" 
      OnRowCommand="gvPhones_RowCommand"> 
</ContentTemplate> 
<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="gvPhones" EventName="RowCommand" /> 
</Triggers> 

他們將在更新後面板,首先點擊沒有任何反應,第二次點擊使得所有的網格視圖消失(如有回傳)

下面的rowcommand方法中的斷點永遠不會到達

protected void gvPhones_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    //do stuff 
} 
+0

當您刪除UpdatePanel時會發生什麼? – 2012-04-03 13:12:18

+0

單擊之後,GridView消失,我認爲這是因爲回發。 – KristianMedK 2012-04-03 13:19:45

+0

我不知道我明白,爲什麼它沒有更新面板的工作? – KristianMedK 2012-04-04 07:54:19

回答

0

如果綁定在頁面加載網格像下面

然後拿到BindGrid()出來的!的IsPostBack的。意味着如果您要在運行時創建網格,則需要在每次回發時重新綁定網格。