2011-12-21 46 views
0

我有一個RealWorld.Grids.FrozenGridView並在網格中選擇了多個複選框(最後一列)後,我嘗試訪問C#文件中的行以在選定的行上運行一些任務,但網格出現爲空,當我嘗試從基於網格名稱的頁面找到控件時,結果爲空。更新面板中的FrozenGridView無法訪問

gridname = (RealWorld.Grids.FrozenGridView)this.FindControl("gridname") as RealWorld.Grids.FrozenGridView; 

網格位於一個UpdatePanel所以訪問網格我包括在查找控制更新面板這樣:

UpdatePanel up1 = new UpdatePanel(); 
    up1.ID = "updatepanelID"; 
    Label gn = (Label)up1.FindControl("labelname"); 

我也嘗試:

label lbl = (Label)this.Page.FindControl("updatepanelid").FindControl("labelname") as Label; 

此應該發生在button_click事件中

有沒有人有這種類型的問題的經驗?

任何幫助表示讚賞!

回答

0

FindControl並不總是按預期工作。試試這個遞歸函數,並使用你最上面的代碼行。

public static Control FindControlRecursive(Control ctlRoot, string sControlId) 
    { 
     // if this control is the one we are looking for, break from the recursion  
     // and return the control.  
     if (ctlRoot.ID == sControlId) 
     { 
      return ctlRoot; 
     } 
     // loop the child controls of this parent control and call recursively.  
     foreach (Control ctl in ctlRoot.Controls) 
     { 
      Control ctlFound = FindControlRecursive(ctl, sControlId); 
      // if we found the control, return it.   
      if (ctlFound != null) 
      { 
       return ctlFound; 
      } 
     }// we never found the control so just return null.  
     return null; 
    } 

你的電話看起來像這樣。

var ridname = (RealWorld.Grids.FrozenGridView)FindControl(this, "gridname") as RealWorld.Grids.FrozenGridView; 
+0

這工作,謝謝你!但網格的行仍然不可訪問,它只顯示行爲零,你有任何提示,爲什麼會發生這種情況。 – Sue 2011-12-21 19:55:37