SqlDataSource會自動完成 Select / Update / Delete / Insert等等的指令與參數。
如果自己動手寫程式(Code Behind),在程式碼裡面,該如何啟動這些已經寫好的SQL指令呢?
這個範例有[兩個]很重要的設定畫面,如果不照著作,程式會有問題。
這兩天看見一本中文書,上面的範例頗為特別。
已經購買本書的讀者,這幾個範例,可以當成書本 14.2節 的後續補充文章。 希望對大家有幫助。
本範例已經收錄在書本(下集)
2010年,「下集」已經推出。一年內熱銷四刷,2011年推出「下集(第二版)」
包含 VB / C#雙語法。書厚 936頁!!
---------------------------------------------------------------------------------------------------------------------
本範例採用的 test資料表,與本書範例相同,這些範例來不及在書上發表,如今在網路上為讀者介紹,當成售後服務。
請您具備本書 GridView第九章、ADO.NET第十三&十四章的基礎後,才來觀摩本範例。
---------------------------------------------------------------------------------------------------------------------
1. 首先,在畫面上,自己拉進幾個 TextBox,而不是套用現成的 DetailsView or FormView控制項。
接著,設定好 SqlDataSource,並且自動產生SQL指令 ----Select / Insert / Update / Delete
簡單的說,新增一筆資料(至資料表)的畫面,我自己手工完成。
但後續的 Insert動作,由 SqlDataSource或 AccessDataSource「自動」幫我做好。
====以下的重點部份,是小弟個人親身測試。並且重點抓圖!不這樣作的話,根本作不出來!==========(Start)====
這時候, .aspx檔案的HTML碼,預設的SqlDataSource的 Insert參數是下面這個樣子。
<InsertParameters>
<asp:Parameter Name="test_time" Type="DateTime" />
<asp:Parameter Name="class" Type="String" />
<asp:Parameter Name="title" Type="String" />
......省略..........
</InsertParameters>
就算程式能運作,資料也無法新增到資料庫裡面!
該怎麼解決呢? 請注意看下面的設定畫面#1,不這樣作的話,程式不會正常運作
SqlDataSource裡面的每一個參數都要重新設定。如下圖的設定畫面#2。
逐一挑選每個 Web控制項(Web Control)的ID名稱,逐一設定完成。
完成後,剛剛的 SqlDataSource裡面的 insert參數,必須變成下面這樣,程式才能運作!
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:testConnectionString1 %>"
InsertCommand="INSERT INTO [test] ([test_time], [class], [title], [summary], [article], [author]) VALUES (@test_time, @class, @title, @summary, @article, @author)" >
<InsertParameters> 註解:看到沒,底下的參數產生變化,這樣才是正確的!
<asp:ControlParameter ControlID="TextBox_test_time" Name="test_time"
PropertyName="Text" Type="DateTime" />
<asp:ControlParameter ControlID="TextBox_Class" Name="class"
PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TextBox_title" Name="title"
PropertyName="Text" Type="String" />
........省略........
</InsertParameters>
</asp:SqlDataSource>
====以上的重點部份,是小弟個人親身測試。並且重點抓圖!不這樣作的話,根本作不出來!==========(End)====
Q:請問你,為什麼要自己設定上面的步驟呢?以前用GridView / ListView都不需這些設定啊?
A:大型的資料繫結(資料綁定)控制項,例如:GridView / ListView / DetailsView等等,搭配SQlDataSource的時候,會自動做好每一個欄位的配對&設定,就算改用樣版(Template)也沒問題。自己不需要手動去修改。
而上面的範例,每一個TextBox控制項,搭配SqlDataSource的時候,無法完成自動配對,必須手動一一設定之!
2. 我們在後置程式碼(Code Behind),寫程式去控制,手動執行 SqlDataSource的 .Insert(),啟動新增的動作。
Protected Sub Button_Insert_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button_Insert.Click
'== 執行SQL指令 .Insert() == 哈哈,後置程式只有一行!
SqlDataSource1.Insert()
End Sub
另一個類似的範例,跟本文的作法一樣
ADO.NET #4.1(改),自己設定輸入畫面,讓SqlDataSource幫我「刪除」一筆資料
https://dotblogs.com.tw/mis2000lab/2016/07/07/sqldatasource_delete_2016
藍色小舖,也有人發問雷同的問題。
就當成這一篇文章的課後習題,給大家自己作吧..... 答案在此,請下載DataBinding_4_Radio.rar
====================================================================================
這個範例,可以讓我們更瞭解 SqlDataSource背後是怎麼運作的。
......正想整理起來,貼上BLOG與大家分享。
突然發現,微軟MSDN網站上的範例,跟書本裡面一模一樣。
那麼,我就省下這些書寫的功夫,轉貼網址給大家吧。
(嗯!我也會參考MSDN的文件,畢竟這是官方文件,最準確!
但我至少會寫上「資料來源:微軟MSDN網站」,註明出處。 表示我是「引用」,而不是原作。
引用學術規範,註明了出處,比較不會被人罵我抄襲。)
沒有介紹上面 "兩張設定圖片",對於用慣VS 2005 / VS 2008 / VS 2010這種開發工具的人,
會一直寫錯程式喔! 請您特別注意!!!!!!
SqlDataSource的幾個事件,直接看他底下的範例:
- 新 增 http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.sqldatasource.inserting.aspx
- 更 新 http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.sqldatasource.updating.aspx
- 刪 除 http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.sqldatasource.deleting.aspx
這兩篇也一樣,可以參考。(這兩篇講基礎,請從此入門)
- 使用參數與SqlDataSource控制項 http://msdn.microsoft.com/zh-tw/library/z72eefad(VS.80).aspx
- 使用SqlDataSource控制項修改資料 http://msdn.microsoft.com/zh-tw/library/fkzs2t3h(VS.80).aspx
已經購買本書的讀者,這幾個範例,可以當成書本 14.2節 的後續補充文章。 希望對大家有幫助。
與本文相關的習題,請看:
2009/9/30 針對本文的題目,我新增一個習題給大家參考 --
[習題] 補充本書第14章 (14-2)的範例--自己撰寫程式SqlDataSource「新增資料」,並且採用參數(InsertParameters)
2012/11/26 針對本文的題目,我新增一個習題給大家參考 -- 如果您要搭配 FileUpload控制項做檔案上傳,本範例會出現一個大Bug,說明與解法如下
FileUpload + FormView(或DetailsView)看似簡單,但不好做 #1--初學者的盲點
FileUpload + FormView(或DetailsView)看似簡單,但不好做 #2--簡單的範例(.FindControl()方法、SqlDataSource參數)
我的書上市了,煩請賞光、支持一下。 感恩~
ASP.NET 專題實務(松崗出版),本書有VB、C#兩種版本!
本系列 ADO.NET 共有下面文章:
- 初探ADO.NET #1,程式與資料庫互動的四大步驟
- 初探ADO.NET #2,DataReader 與 DataSet(資料集)
- ADO.NET #3 (GridView + SqlDataSource)完全手寫、VB 後置程式碼! (難度很高,初學者請略過)
- 同上,[C#版的範例]
- ADO.NET #4(改),自己設定輸入畫面,讓SqlDataSource幫我們完成「新增」一筆資料
- ADO.NET #5,自己設定畫面,讓SqlDataSource幫我們撈(呈現)資料
- [習題]ADO.NET #6, DataSet如何新增一筆資料?
- [習題]ADO.NET #7,避免相同資料 重複輸入(重複新增)
- [習題]ADO.NET #8,文章(產品)的瀏覽次數 / 點閱數 / 點擊次數,怎麼作?
- ADO.NET #9 FormView + SqlDataSource完全手寫、後置程式碼!
- ADO.NET #10 DetailsView 變更模式(完全手寫、後置程式碼!)
- ADO.NET #11 自己控制SqlDataSource的例外狀況
- ......文章 仍在增加中......
範例:
=== 最後要打一下廣告 ==========================
1. 如果您覺得我的描述、寫作方式,符合您的胃口。
2. 如果您看完以後,知道我寫書、介紹一些控制項或是技術........不是「混過去」、「帶過去」而已,而是真真確確地蒐集 "有用的範例",讓您學得更深入!
3. 如果您覺得:我出完書以後,還不定期地提供售後服務,提供補充教材......這樣的互動是 "良性"的,是值得鼓勵的。......已經推出 兩百多篇 補充範例了
4. 如果您(尤其是學生)真的想把基礎學好,而不是 "混"過這一門課就好、而不是寫個(畢業專題的)屍體出來交差(能畢業就好).....那麼.......
請您購買下面的書籍,
東西多到您學不完
上 / 下兩集,兩本書的厚度(我蒐集的各種範例)將近 兩千頁 !!......絕對不會讓您失望
今日值班正妹---- 仲間由紀惠 (很久以前抓的圖片,忘記來源在哪裡了.....是電影「忍」的劇照)
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。