2014年5月9日 星期五

GridView 動態產生欄位 For C#

資料來源:
http://www.blueshop.com.tw/board/fum20041006161839lrj/BRD2011031411333152E.html

事先(page_init)建立所有的欄位,

事後(page_load, button_click, .....)隱藏某幾個已存在的欄位 

GridView密技#4---使用ITemplate介面,動態新增「GridView樣版列(Template Row/模版列)」,內含VB與C#語法

http://www.dotblogs.com.tw/mis2000lab/archive/2008/12/24/gridview_dynamic_add_template_1224.aspx

GridView密技#5---(修改/補強版)使用ITemplate介面,動態新增「GridView樣版列(Template Row/模版列)」
http://www.dotblogs.com.tw/mis2000lab/archive/2008/12/24/gridview_dynamic_add_template_1224.aspx 


Q:自訂GridView欄位,為何每換頁一次,欄位就一直增加呢?
資料來源:
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20101117120721FD2.html


protected void Page_Init()
{
dt.clear(); // 加一行
dt = sqlDB.DbCreateDataTable(sql, "Grid1");

-------

我想可能是「GridView的 DataBinding時機有錯」

如果您寫在 Page_Load()事件裡面,
多寫一段判別式,說不定就改善了。
IF Not Page.IsPostBack Then
'----把 DBInit()程式寫在這裡
End IF

DBInit()就是您目前 Page_Init()這一區塊的程式碼。

關於 Page的生命週期,PostBack的觀念,Page_Load()事件何時被觸發?
您可以參考這 2篇文章,希望對您有幫助。

[FAQ]GridView的編輯、修改、刪除,為何都會重複執行兩次?
http://www.dotblogs.com.tw/mis2000lab/archive/2009/10/20/11157.aspx


自己動手寫 GridView的編輯/更新程式,但抓不到修改後的資料?(兼論DataBinding的時機)
http://www.dotblogs.com.tw/mis2000lab/archive/2009/11/09/11497.aspx 

------

把addSource();從Page_Load移到Page_Init.
並且把中斷點放在Page_Init的addSource(),但發現一個問題.
當我按下送出的時候 此時畫面會PostBack 這個時候,Page_Init也是會被執行,且會再次觸發.
您試會嗎?如果不會,是我這裡有什麼東西沒設定到嗎?

後端程式如下:

protected void Page_Init(object sender, EventArgs e)
{
addSource();
}

protected void Page_Load(object sender, EventArgs e)
{
}

private void addSource()
{
ddlTest1.Items.Add(new ListItem("s1", "1"));
ddlTest1.Items.Add(new ListItem("s2", "2"));
ddlTest1.Items.Add(new ListItem("s3", "3"));


沒有留言: