台灣最大程式設計社群網站
線上人數
707
 
會員總數:242931
討論主題:187836
歡迎您免費加入會員
討論區列表 >> ASP.NET >> FindControl找不到元件
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
FindControl找不到元件
價值 : 30 QP  點閱數:298 回應數:6

樓主

Steven HO
初學者
80 10
261 36
發送站內信

是這樣的
因為需求,要動態產生大量Textbox

所以我使用了迴圈來產生



AddNewLabel跟AddNewTextBox是產生的方法,會在畫面上建立這些元件

tb1是在迴圈外,代表他不用透過層層的panel就可以抓到


上述是我從網頁原始碼抓出來的這筆資料

然後我設計一個按鈕,把這些TextBox數據回收



結果這時候....抓不到了

真頭痛~~求教大大

搜尋相關Tags的文章: [ Findcontrol ] , [ panel ] , [ ContentPlaceHolder ] ,
本篇文章發表於2018-01-31 11:00
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
你有用主版頁面嗎?
本篇文章回覆於2018-01-31 12:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Steven HO
檢舉此回應
有的~~不過最後是發現postback的問題

我是把建立物件寫在下拉選單內

把抓回物件寫在按鈕內

因為當按鈕按下會postback,所以我把建立物件的程式移到Page_Load,按鈕就抓的到了

現在換困擾,我要選擇的部分不知怎麼寫了
本篇文章回覆於2018-01-31 17:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
1.動態產生控制項,要注意產生的時間與您想取用的時間先後順序
2.動態產生控制項,建議事件寫在『Page_Init』中
3.資料的保留,每次PostBack都會重新產生控制項,那麼要注意如何保存控制項的狀態

動態產生控制項這方式,很不好處理

而不見得需求只能用『動態產生控制項』
所以,小喵自己會盡量避免使用『動態產生控制項』
改以『預先準備控制項,動態處理他的Visiable狀態』

小喵因此想詢問,您是在什麼樣的『需求』,會想用『動態產生控制項』?
也許,可以不必這樣寫,一樣可以達到需求

^.^a

本篇文章回覆於2018-01-31 17:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Steven HO
檢舉此回應
大大您好

因為小弟這14條產線,這些產線又有一百多的點位
當然如果每條產線的點位我都寫死,再用Panel全部蓋住
選單選到的線別才把Panel顯示,再把裡面點位的設定值抓出來就很簡單了

可是顧及到我們的產線點位有可能會再增加,所以只好寫動態的

目前把動態產生的點位寫在Page_Load,是可以在Button抓到值
不過這會造成我無法進入此網頁選擇線別再去跑撈點位的方法

不然就是要使用雙頁面,第一頁負責把選擇線別參數丟到第二頁,由第二頁接到Request後直接跑產生點位的程式

不管我用網路上任何方法,都無法讓Button產生postback

最接近的是在動態產生點位前加上"Button1.Attributes.Add("onclick", "return false;")"

不過Button_click也不觸發了.....

有甚麼好建議嗎??
本篇文章回覆於2018-02-01 10:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Forevertim
檢舉此回應
將動態控制項的產生語法,放在Function下面。
Page Load的時候在判斷是否因為XXX條件,是否要產生動態控制項之類的。這樣子在動態控制項裡面輸入的值會保留,也可以抓取的到

這樣的做法 要先了解 EnableEventValidation
本篇文章回覆於2018-02-01 10:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
因為小弟這14條產線,這些產線又有一百多的點位
當然如果每條產線的點位我都寫死,再用Panel全部蓋住
選單選到的線別才把Panel顯示,再把裡面點位的設定值抓出來就很簡單了

可是顧及到我們的產線點位有可能會再增加,所以只好寫動態的


小喵整理一下需求
1.會有不特定數量的『產線』
2.每個產線會有不特定數量的『點位』

小喵處理的話,會這樣做
1.拉ListView lvLines,綁產線的ObjectDataSource odsLines,這樣動態產線就可以多筆產生
2.在lvLines的ItemTemplete中
拉另一個lvPoints在其中,綁點位的ObjectDataSource odsPoints,這樣,每個產線中的多筆點位就可以動態產生

這樣,無論產線增減,或者點位增減,都可以處理
資料也可以直接綁定上去

ViewState預設開啟,PostBack也不會有資料不見問題

最後,使用者維護後,送出
可以雙重回圈,透過FindControl,取得各相關控制項內容
然後再寫維護的程式,一次的呼叫Function一次維護

大致的方向這樣,有疑問的部分,歡迎提出討論
^_^

本篇文章回覆於2018-02-01 12:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.