2013年10月23日 星期三

[習題].FindControl()的習題 -- GridView 跨網頁 修改(編輯)

這是我的文章備份,原文請看:http://www.dotblogs.com.tw/mis2000lab/archive/2013/10/15/gridview_crosspage_posting_edit_update.aspx

[習題].FindControl()的習題 -- GridView 跨網頁 修改(編輯)


有一個 GridView,按下按鈕之後,會去另一個網頁進行修改。
      GridView先轉成樣板,然後把 Label改成 TextBox並且重新「設定DataBinding」
      詳見書本上集 Ch.8

在新的網頁上,修改之後,把資料傳到「原本網頁」
這就是「跨網頁張貼」、「跨網頁公布」的技巧。
詳見書本上集 Ch.15
其實最簡單的作法,就是修改後,立即寫進DB
如此一來,Gridview只要重新 DataBinding即可。

但我不清楚為何搞到這麼複雜,「只修改畫面上的TextBox,不寫進資料庫???」


==============================================================================
這個範例使用到的知識,如下:
 
1. 跨網頁公布、跨網頁張貼
    詳見書本上集,Ch.15
 
 
2. 大型控制項裡面的「按鈕」 CommandName 屬性與 RowCommand事件(或 ItemCommand事件)
    詳見書本上集 Ch.10
 
 
3. 大型控制項的「流水號」
 
 
這三招組合起來,範例 GridView_CrossPage_Posting_0.aspx 就做得到:
01protected void Page_Load(object sender, EventArgs e)
02{
03    if (Page.PreviousPage != null)
04    {
05        if (PreviousPage.IsCrossPagePostBack)
06        {  //跨網頁張貼,才能運作下面的程式碼。      
07            int j = Convert.ToInt32(Session["RowIndex"]);
08 
09            TextBox TB_A = (TextBox)GridView1.Rows[j].FindControl("TextBox_test_time");
10            TextBox PrevPageTB1 = (TextBox)PreviousPage.FindControl("TextBox1");
11            TB_A.Text = PrevPageTB1.Text;
12 
13            TextBox TB_B = (TextBox)GridView1.Rows[j].FindControl("TextBox_title");
14            TextBox PrevPageTB2 = (TextBox)PreviousPage.FindControl("TextBox2");
15            TB_B.Text = PrevPageTB2.Text;
16        }
17    }
18}

 
 
裡面共有三組範例,兩支檔案為一組。
 
第一組,範例1~2。使用傳統Http Get方式來傳值。請注意!會有SQL Injection攻擊的疑慮。難易度:低!
第二組,範例3~4。跨網頁張貼(CrossPage-Posting)搭配 Session
第三組,範例5~6。直接使用Session,最簡便!難易度:低!
 
 
 
==============================================================================
 
完成上面三個步驟就行了,都是書本上集的技巧
 
但我覺得搭配下面這一招,才能連貫起來!
 
 
4. GridView 批次 修改(編輯)多列、批次更新
 
    
 
 
 
.......................以下是廣告........................................................................................
 
 
我的書、我的課程,絕對沒有太多招數
 
都是用最基本的技巧
組合成各種變化。
 
如同詠春拳,三個套路,
排列組合、變化萬千
 
王家衛的電影,一代宗師,台詞如下:
 
勇哥:我打雜家的。 
 
葉問:你可真夠雜的。 
 
勇哥:雜又怎麼樣?能打不就行啦。
          人家宮家六十四手千變萬化,你們詠春就三板斧。攤、膀、伏,你怎麼打啊? 
 
葉問:三板斧就夠你受的了. 
 
 
 
 
 
與其到處  Copy範例、到處抄襲程式碼(找到了也改不動)
 
為什麼不一次學好、學清楚?
 
然後讓自己有生產力呢?
(你學了一百招,但上了戰場,一招都使不出來?)
(客戶的要求,沒有一個你能自己做到?還是上網逐一發問、抄抄改改?)
 
 
為什麼人家可以千變萬化?
 
我只能到處拼拼湊湊?卻還天天加班、做不完?最後還是迷迷糊糊?
 
 
 
 
   如何一以貫之
         如何啟動「輕輕鬆鬆的自我學習之道」?
 
 
讓我告訴你,
一個沒有大型補習班招牌、沒有關鍵字廣告的書籍與課程
 
 
在時局這麼亂、經濟與工作越來越蕭條的  Bumbler 無能年代
 
為何所有補習班的 ASP.NET課程都開不成、招不到學生
 
我的課程,班班額滿,欲罷不能.............縱貫這三四年 全台灣 的 ASP.NET入門教學
 
 
 
 


沒有留言: