摘要:[習題].FindControl()的習題 -- GridView 跨網頁 修改(編輯)
有一個 GridView,按下按鈕之後,會去另一個網頁進行修改。
GridView先轉成樣板,然後把 Label改成 TextBox並且重新「設定DataBinding」
詳見書本上集 (ASP.NET專題實務(I) / 博碩出版)Ch.8
在新的網頁上,修改之後,把資料傳到「原本網頁」
這就是「跨網頁張貼」、「跨網頁公布」的技巧。
詳見書本上集 (ASP.NET專題實務(I) / 博碩出版) Ch.15
其實最簡單的作法,就是修改後,立即寫進DB
如此一來,Gridview只要重新 DataBinding即可。
但我不清楚為何搞到這麼複雜,「只修改畫面上的TextBox,不寫進資料庫???」
==============================================================================
這個範例使用到的知識,如下:
1. 跨網頁公布、跨網頁張貼
詳見書本上集 (ASP.NET專題實務(I) / 博碩出版),Ch.15
2. 大型控制項裡面的「按鈕」 CommandName 屬性與 RowCommand事件(或 ItemCommand事件)
詳見書本上集 (ASP.NET專題實務(I) / 博碩出版)Ch.10
3. 大型控制項的「流水號」
詳見 http://www.dotblogs.com.tw/mis2000lab/archive/2011/11/05/gridview_container_dataitemindex.aspx
這三招組合起來,範例 GridView_CrossPage_Posting_0.aspx 就做得到:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.PreviousPage != null)
{
if (PreviousPage.IsCrossPagePostBack)
{ //跨網頁張貼,才能運作下面的程式碼。
int j = Convert.ToInt32(Session["RowIndex"]);
TextBox TB_A = (TextBox)GridView1.Rows[j].FindControl("TextBox_test_time");
TextBox PrevPageTB1 = (TextBox)PreviousPage.FindControl("TextBox1");
TB_A.Text = PrevPageTB1.Text;
TextBox TB_B = (TextBox)GridView1.Rows[j].FindControl("TextBox_title");
TextBox PrevPageTB2 = (TextBox)PreviousPage.FindControl("TextBox2");
TB_B.Text = PrevPageTB2.Text;
}
}
}
檔案下載:GridView_CrossPage_Posting.rar
裡面共有三組範例,兩支檔案為一組。
第一組,範例1~2。使用傳統Http Get方式來傳值。請注意!會有SQL Injection攻擊的疑慮。難易度:低!
第二組,範例3~4。跨網頁張貼(CrossPage-Posting)搭配 Session
第三組,範例5~6。直接使用Session,最簡便!難易度:低!
==============================================================================
完成上面三個步驟就行了,都是書本上集 (ASP.NET專題實務(I) / 博碩出版)的技巧
但我覺得搭配下面這一招,才能連貫起來!
4. GridView 批次 修改(編輯)多列、批次更新
[MSDN][轉貼] GridView "批次"執行更新與刪除、執行 "大量"更新更新與刪除
http://www.dotblogs.com.tw/mis2000lab/2012/01/13/gridview_multi_row_updating_20120113
2013/11/11補充:
[勘誤]VS 2013因為Routing產生錯誤 -- 跨網頁張貼(Cross-Page Posting),微軟稱為「跨網頁公布」
http://www.dotblogs.com.tw/mis2000lab/2013/11/11/vs2013_cross_page_post_routeconfig
另外一位前輩的相關範例(作者F6 Team)
ASP.NET父子視窗的應用,利用子視窗的Gridview選取一個值,傳回父視窗
http://www.dotblogs.com.tw/puma/2008/04/26/3508
.......................以下是廣告........................................................................................
我的書、我的課程,絕對沒有太多招數
都是用最基本的技巧,
組合成各種變化。
如同詠春拳,三個套路,排列組合、變化萬千
王家衛的電影,一代宗師,台詞如下:
勇哥:我打雜家的。
葉問:你可真夠雜的。
勇哥:雜又怎麼樣?能打不就行啦。
人家宮家六十四手千變萬化,你們詠春就三板斧。攤、膀、伏,你怎麼打啊?
葉問:三板斧就夠你受的了.
與其到處 Copy範例、到處抄襲程式碼(找到了也改不動)
為什麼不一次學好、學清楚?
然後讓自己有生產力呢?
(你學了一百招,但上了戰場,一招都使不出來?)
(客戶的要求,沒有一個你能自己做到?還是上網逐一發問、抄抄改改?)
為什麼人家可以千變萬化?
我只能到處拼拼湊湊?卻還天天加班、做不完?最後還是迷迷糊糊?
讓我來告訴您,ASP.NET WebForm 該怎麼學?心法在哪裡?
如何一以貫之?
如何啟動「輕輕鬆鬆的自我學習之道」?
1. [自我評量表] ASP.NET 我該上什麼課?入門、或是進階?.....
2. [課程大綱]ASP.NET入門實戰 + ADO.NET進階班(七週),教學內容
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。