2012-04-21 66 views
0

我在我的網頁上有一個佔位符,我動態地將用戶控件綁定到它。如何從父頁面搜索位於用戶控件中的GridView?

我嘗試遍歷佔位符內的所有控件並獲取控件ID,這是我的用戶控件的ID。控件ID基本上是我用戶控件的下劃線的名稱;所以如果我的用戶控件的名字是dynamicControl.ascx,那麼在我的control.ID中我得到了ASP.dynamicControl_ascx。現在我需要再次加載我的用戶控件嗎?如果是這樣,我該怎麼做,以及如何輸入它,以及我如何找到我的usercontrol內的gridview?

用戶控件是一個gridview,我需要檢索在控件內的文本框中輸入的值。

回答

2

幾個步驟/這裏需要的概念...

  1. 瞭解頁面生命週期和知道在哪裏/當綁定動態組件。通常這可以通過在Page_Init中執行綁定來完成,以便它們出現在回發視圖狀態綁定中。如果沒有這種考慮,你的網格可能不存在,如果它存在,大多數情況下都是空的。有時候只是將你的綁定移動到Page_Init中是不可能的......在這些情況下,你應該使用谷歌的Biding動態控件。有很多關於如何解決獲取回傳動態內容的方法。

  2. 這不需要走孩子控制列表 - 看看FindControl。假設網格創建時被分配了'MyGrid'的ID,並且用戶控件被命名爲MyUserControl ...要在回發中定位網格(假設處理上面的第一個視圖狀態問題) - 您可以簡單地使用: grid = MyUserControl.FindControl("MyGrid")

當然,如果沒有網格對象返回,那麼MyGrid不存在。

希望這有助於.....

+0

這是我的代碼...我無法找到......是的,我上加載初始化我的佔位符的功能,我看到我的回發電網.... – user1348130 2012-04-22 02:27:39

+0

回報0rows 的DataTable questionResp =新的DataTable(); String questionLabel = String.Empty; 的foreach(在phReqForm.Controls控制CTRL) {的foreach(控制ctrlChild在ctrl.Controls) {如果(ctrlChild是ASP.dynamiccontrolfr_ascx) {用戶控件UC =新用戶控件(); UC =(用戶控件)Page.LoadControl( 「DynamicControlFR.ascx」); 的GridView = GV((GridView的)uc.FindControl( 「gvFR」)); 串測試= gv.Rows.Count.ToString(); questionResp.Rows。添加(測試,測試,questionLabel,測試); }}} – user1348130 2012-04-22 02:40:41

1

這將幫助你 http://www.asp.net/web-forms/tutorials/master-pages/control-id-naming-in-content-pages-cs

這樣我能找到其動態添加控制值。 只需提供您想要查找的控件ID。 這裏我面板ID是plnall和文本框的id是txt_idcplacehld是內容佔位符ID,ctl00是母版ID

MasterPage ctl00 = FindControl("ctl00") as MasterPage; 

      ContentPlaceHolder cplacehld = ctl00.FindControl("ContentPlaceHolder2") as ContentPlaceHolder; 
Panel panel1 = cplacehld.FindControl("plnall") as Panel; 
TextBox txt = cplacehld.FindControl("txt_id") as TextBox; 
        value = txt.Text; 
+0

嗨伊萬Karajas, 能告訴我你的電子郵件,因爲我不能在這裏貼上我的代碼由於字符限制......我可以解釋你的電子郵件我的情況和我所試圖做... – user1348130 2012-04-22 02:48:00

+0

我不能粘貼我的完整代碼,但想法我的gridview是在usercontrol裏面,並且在我的應用程序中有許多用戶控件。根據特定條件,我將用戶控件綁定到我的網頁上的佔位符。我想保存從我的網頁上按保存按鈕usercontrol的gridview的數據。所以我需要檢索我的gridview行的所有值並保存它們...但我找不到我的網格。我可以找到像ASP.dynamicControl_ascx這是我的用戶控件的名稱沒有下劃線和前綴ASP ...這是非常令人沮喪的...請幫助 – user1348130 2012-04-22 02:54:01

相關問題