台灣最大程式設計社群網站
線上人數
966
 
會員總數:243164
討論主題:187984
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 動態產生Textbox,當點選Button後,動態產生的Textbox全部不見
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
動態產生Textbox,當點選Button後,動態產生的Textbox全部不見
價值 : 50 QP  點閱數:315 回應數:14

樓主

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

我在網頁上動態產生了數個Textbox

本來是想搭配Button上傳這些TextBox的資料

但卻發現,當按下按鈕時,這些TextBox會消失不見

所以我在Button裡面寫FindControl會找不到

請問各位大大有甚麼好建議嗎




搜尋相關Tags的文章: [ 動態產生 ] , [ findcontrol ] ,
本篇文章發表於2018-03-09 09:26
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

Steven HO
檢舉此回應
忘了講,我是在PlaceHolder把Textbox產生出來的
本篇文章回覆於2018-03-09 10:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Steven HO
檢舉此回應
我有用另一種方法是可行的

就是在查詢畫面裡,當查詢的資料選定好後,點選按鈕跳出另一個視窗

視窗裡面就是這些動態產生的TEXTBOX

我每次在Page_Load就產生這些元件

就可以設一個更新Button按鈕來更新數據



但是,我想把它寫在同個畫面裡,想不出辦法

因為在動態產生TEXTBOX時,使用者要先選哪一條產線的資料,我在生成那些產線的TEXTBOX及數據

所以,如果我想在page_load重新生成TextBox就不可能了

求解大大
本篇文章回覆於2018-03-09 11:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
建議,在Page_Init的事件中,產生動態控制項
這樣,在Page_Load事件中,還可以把這些動態產生的控制項讀取其狀態

^_^
本篇文章回覆於2018-03-09 15:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
另外,其實或許可以不必寫動態產生的控制項
是否可以描述一下,為何要用動態產生控制項?
什麼樣的需求?什麼樣的情境?
也許可以提供您,根據您的需求與情境,如何不用動態產生控制項,一樣可以做

^.^a
本篇文章回覆於2018-03-09 15:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Steven HO
檢舉此回應
主要是因為欄位太多,這些欄位是產線上監控數據的上下限欄位,存回資料庫

大大建議的方法沒用,因為按下按鈕後根本不進Page_Load
本篇文章回覆於2018-03-09 16:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Steven HO
檢舉此回應
修正修正

當按下更新按鈕時,確實會去跑Page_Load的程式

但是這時候,一開始自動產生的TextBox也不見了

所以我寫在更新按鈕裡的findcontrol根本抓不到原本的TextBox
本篇文章回覆於2018-03-09 17:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
1.您的動態產生TextBox,是否有在Page_Init事件中?
2.動態產生的TextBox,放在哪裡?
3.您的FindControl怎麼寫?
FindControl,要透過要放的Control的NamingContainer去找,才能找到
這根是否動態無關唷
例如:
放在最外面的,可以透過Me.FindControl找到,因為Me(Page)是最外層控制項的namimgContainer
如果放在GridView中Cell的控制項,就必須透過GridView的Row去找,因為GridView中Cell內的控制項,他的namingContainer是GridViewRow

所以,搞清楚您的控制項他的NamingContainer,是使用FindControl的基本必要條件

沒有看到Code...
一切只能用猜的∼
(很辛苦∼呼∼)

如果您的程式牽涉敏感資料,那麼舉個(寫個)接近的例子,把程式碼丟出來
這樣才能有助於幫您找到關鍵的問題點

^_^
本篇文章回覆於2018-03-09 17:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
主要是因為欄位太多,這些欄位是產線上監控數據的上下限欄位,存回資料庫

您這句,是要說明為何要用動態產生控制項是嗎?
不是很理解,欄位太多,所以必須動態產生是什麼意思

能否具體的描述一下

小喵感覺您的需求應該不必動態產生控制項
事實上
小喵自己寫系統,幾乎沒有動態產生控制項
複雜的問卷都可以處理

請您盡可能完整描述您的需求,資料欄位如何?想做什麼

例如:(小喵舉例怎麼描述需求)
我做生產線的狀態控制
生產線不特定幾個(使用者可以自己定,1~10條都有可能)
運作時需要控制的狀態項目也不特定(依據要生產的東西而定)
資料庫中,使用者可以設定要使用幾條生產線
有設定不同的東西,他們控制的狀態
例如:產品,狀態,上限,下限

小喵所描述的這個舉例的問題,其實是不必用動態產生控制項就可以做的
但∼您的問題,詳細的需求是什麼呢?

^_^
本篇文章回覆於2018-03-09 18:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

Steven HO
檢舉此回應
謝謝喵大

其實就是因為我們工廠有14條產線

每條產線裡面的檢測點位都不太一樣,所以在資料庫內我們已經分開了這幾個線別跟不同的欄位

root是線別→群組→點位,如果用固定的,那我得寫14個頁面,而且將來如果有線別新增點位,我還要到前端修改頁面,麻煩

現在問題很簡單,就是我這些動態產生的Textbox,要讓使用者輸入後按下按鈕存檔

偏偏當使用者按下按鈕時,postback發生,同時動態產生的Textbox也消失掉,我寫在按鈕裡要抓這個TextBox也就消失掉

就沒辦法存檔了~~謝謝您
本篇文章回覆於2018-03-12 09:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應

root是線別→群組→點位,如果用固定的,那我得寫14個頁面,而且將來如果有線別新增點位,我還要到前端修改頁面


假設:
狀況是
一個工廠有幾個生產線(數量不固定)
每生產線有幾個群組(數量不固定)
每個群組有幾個點位(數量不固定)
每個點位有幾個感應器(數量不固定)

小喵設計的話,會設計
線別資料表:
線別代號(PK),線別名稱

檢測點資料表
線別代號(PK),檢測點代號(PK),群組代號,檢測點名稱

如果有必要,群組可以再拉出一個資料表,或者用View查詢就可

生產線檢測點感應器資料表
線別代號(PK),檢測點代號(PK),感應器代號(PK),正常最高值,正常最低值


假設,要一個生產線感器高低值設定的話面,一個畫面就要顯示所有感應器
這樣,小喵就可以在畫面上


所有的數量都是不固定的,只有每個感應器,固定有『最高、最低』兩種數值
這樣的設計畫面,無論新增幾個生產線,新增幾個群組代號、新增幾個偵測點,每個偵測點新增幾個感應器
都可以處理
而且,沒有用到動態產生控制項(指示透過ListView,讓回圈產生設定好的控制項
也不必因為生產線14個,就要做14個畫面
^_^


本篇文章回覆於2018-03-12 10:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
小喵個人偏好#10的方式,因為這樣寫,容易維護多了

動態產生控制項也是可以,但,光一層就很複雜
如果有好幾層,那複雜度可想而知
以下是小喵做的範例:您可以試試看是否能夠理解

畫面:
.aspx

Code File:
.aspx.vb



動態產生資料如果還要加上畫面的美化,那就更麻煩
與#10比較,您思考一下,哪個比較容易維護

當層級越多(生產線>群組>偵測點>感應器>...)
小喵覺得動態產生會越難寫

而#10架構清楚,應用起來也不複雜,畫面美化也相對直觀
所以,小喵偏好#10的設計

您思考看看∼
^_^
本篇文章回覆於2018-03-12 10:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

Steven HO
檢舉此回應
感謝喵大

其實原理跟你寫的程式差不多

不過你裡面寫的

'動態產生控制項,要在Page的Init事件產生,這樣他的ViewState才能起作用,填寫的資料才得以保留

提醒了我

我把動態產生的sub改在init裡執行,按下按鈕時,textbox就被抓到了,搞定

謝謝您
本篇文章回覆於2018-03-12 14:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

Steven HO
檢舉此回應
問一下

要怎麼把點數給喵大啊??
本篇文章回覆於2018-03-12 14:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
每個回應的旁邊頭像下面,有個『接受』
您可以針對最有幫助的一個回應,先點那個回應『接受』
之後可以對各個回應,分配點數

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

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