台灣最大程式設計社群網站
線上人數
2226
 
會員總數:246497
討論主題:190005
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 無法正常取得UserControl中的Gridview欄位CheckBox的值
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
無法正常取得UserControl中的Gridview欄位CheckBox的值
價值 : 100 QP  點閱數:3874 回應數:16
樓主

歸零學習
初學者
960 2
360 112
發送站內信

呼~光想主題就有點繞口令請大家見諒。
主要問題是這樣的:
我建立一個UserContol,在UserContol裡面只有一個GridView的控制項。
然後GridView中有一個CheckBox的欄位可以勾選。

有一個主頁面.aspx使用動態載入的方式載入UserContol,
然後再勾選GridView中的CheckBox,當按下Button後(PostBack),取得到CheckBox值都是false

請問各位大大是什麼造成這問題?

PS:如果不使用動態載入UserContol的方式是可以正常運作的。

本篇文章發表於2013-07-02 18:47
== 簽名檔 ==
---------------------我是簽名檔---------------------

你問的問題我只能治標,治本只能靠自己。
1樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
請問checkbox在gridview裡面? 是一顆還是N顆?
button是在uc還是page裡?
您動態載入uc是寫在什麼事件,怎麼寫的?
postback後取值,是怎麼寫的?
本篇文章回覆於2013-07-02 23:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

歸零學習
檢舉此回應
To Allen,
1.CheckBox是在GridView裡面
2.Button是放在Page
3.uc是在Page_Load被載入

4.postback後呼叫UserControl實作我自訂的其中一個方法Sava()



整個動作流程
1.Page_Load 動態載入UserControl
2.按下Page查詢按鈕,並觸發UserControl提供的Query()方法 將資料繫結至GridView
3.User勾選GridView內的CheckBox
4.按下Page儲存按鈕,並觸發UserControl提供的Sava()方法
5.UserControl Sava()開始檢查GridView那些Row的CheckBox被勾選,(問題就出在這CheckBox的值都是false)

本篇文章回覆於2013-07-02 23:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
page load 插入uc的動作改為寫在page init 試試看
本篇文章回覆於2013-07-03 00:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

歸零學習
檢舉此回應
我大概知道問題出在那堣F
一開始是由Page_Load載入UserControl,PostBack後是由BtnSave_Click中載入。
請問UserControl在Page_Load載入跟在Button Click事件中載入是不同物件嗎?
本篇文章回覆於2013-07-03 00:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

歸零學習
檢舉此回應
我剛剛測試了一下,如果一開始在Page_Load載入UserControl,PostBack後也是在Page_Load載入就沒問題了。

只是不清楚為什麼一開始是由Page_Load載入UserControl,PostBack後是由BtnSave_Click中載入就不行了,運作原理是如何?
本篇文章回覆於2013-07-03 00:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
若要了解,就要了解控制項的生命週期,我7/13 開的控制項進階班也許適合您
自學比較難找到適合的書籍
本篇文章回覆於2013-07-03 01:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

歸零學習
檢舉此回應
感謝Allen大,感覺那個課程都是針對我需要的,可惜7月份我都在出差,有機會再找Allen大。
本篇文章回覆於2013-07-03 01:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

MIS2000 Lab
檢舉此回應
Q : 如果一開始在Page_Load載入UserControl,PostBack後也是在Page_Load載入就沒問題了。

只是不清楚為什麼一開始是由Page_Load載入UserControl,
PostBack後是由BtnSave_Click中載入就不行了,運作原理是如何?

================================================

A : 我的天,您已經寫這麼難的程式了
卻不懂 PostBack.......(驚)

您的問題跟這篇文章一樣(這個人跟您犯了相同的錯)
希望對您有幫助
上課第一天的有趣範例 -- PostBack基礎觀念 & Page.IsPostBack
http://www.dotblogs.com.tw/mis2000lab/archive/2013/01/08/postback_q_and_a_20130108.aspx
本篇文章回覆於2013-07-03 08:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
不錯的參考

MIS2000 Lab
檢舉此回應
這兩個小範例,是我以前用來解說PostBack的(比較難,我現在比較少用)
您也可以參考一下

[習題].FindControl()方法 與 PlaceHolder控制項 #1(動態加入「子控制項」,因Page_Load而發生的錯誤)
http://www.dotblogs.com.tw/mis2000lab/archive/2010/04/09/placeholder_findcontrol.aspx

下一篇文章:http://www.dotblogs.com.tw/mis2000lab/archive/2011/07/26/placeholder_findcontrol_eventhandler.aspx
本篇文章回覆於2013-07-03 08:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

歸零學習
檢舉此回應
感謝MIS2000 Lab 大大的指導,因為我都是自學,或者是來論壇看看人家的問題,有空就試著做,所以有些運作原理不是那麼懂,抱歉。
本篇文章回覆於2013-07-03 10:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

歸零學習
檢舉此回應
還有MIS2000 Lab大我比較想知道的是動態載入UserControl為什麼在BtnSave_Click事件中載入結果不一樣?

假設 Page_Load呼叫A()的方法跟BtnSave_Click呼叫A()方法 基本上因該是都要一樣。

PostBack後會先跑Page_Load在跑BtnSave_Click事件這點我知道,只是動態載入為什麼一定要先在Page_Load載入?

還是反過來問我可不可以在BtnSave_Click事件載入UserControl?
本篇文章回覆於2013-07-03 11:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

歸零學習
檢舉此回應
感謝二位大大的指教,找國外文章找到這篇ViewState and Dynamic Control
問題因該是因為動態載入Control時加入的順序不同,所以當PostBack後造成ViewState有問題。
本篇文章回覆於2013-07-03 11:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
最有價值解答

Allen
捐贈 VP 給 Allen 檢舉此回應
是的,這就是所謂網頁/控制項生命週期的問題,您若愈了解控制項的運作機制,就比較不會覺得遇到靈異現象
本篇文章回覆於2013-07-03 13:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
不錯的參考

Allen
捐贈 VP 給 Allen 檢舉此回應
>>還是反過來問我可不可以在BtnSave_Click事件載入UserControl?
嚴格說來是不宜,不過如果您的uc其實只是呈現資訊,並不需要postback又再度呈現,其實放在button click裡是ok的
本篇文章回覆於2013-07-03 13:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
不錯的參考

MIS2000 Lab
檢舉此回應
動態載入控制項,我自己作過一些題目
例如這兩篇文章:

自動化投票區、網路問卷、問卷調查,如何規劃與設計?#1(觀念篇)......考驗初學者能力的一門課
http://www.dotblogs.com.tw/mis2000lab/archive/2011/05/05/24244.aspx

自動化投票區、網路問卷、問卷調查,如何規劃與設計?#2 (程式篇)動態產生畫面與控制項
http://www.dotblogs.com.tw/mis2000lab/archive/2011/05/05/24269.aspx

但在這個範例中,我得到 Allen Kuo很多協助與觀念上的釐清

不管是自修?或是上課?
想要學會(學通),大概就是「多作、多想」吧
本篇文章回覆於2013-07-03 13:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

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