ADO.NET #4(改),自己设定输入画面,让SqlDataSource帮我们完成「新增」一笔数据
http://www.dotblogs.com.tw/mis2000lab/archive/2008/09/19/sqldatasource_20080919.aspx
这两天看见一本中文书,上面的范例颇为特别。
已经购买本书的读者,这几个范例,可以当成书本 14.2节 的后续补充文章。 希望对大家有帮助。
[ASP.NET案例精编--适用于VS2005/2008] 清华大学出版社
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
---------------------------------------------------------------------------------------------------------------------
本范例采用的 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:SqlDataSourceID="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(ByValsender As Object, ByVal e As System.EventArgs) Handles Button_Insert.Click
'== 执行SQL指令 .Insert() == 哈哈,后置程序只有一行!
SqlDataSource1.Insert()
End Sub
蓝色小铺,也有人发问雷同的问题。
就当成这一篇文章的课后习题,给大家自己作吧.....
答案在此,请下载DataBinding_4_Radio.rar
====================================================================================
这个范例,可以让我们更了解 SqlDataSource背后是怎么运作的。
......正想整理起来,贴上BLOG与大家分享。
突然发现,微软MSDN网站上的范例,跟书本里面一模一样。
那么,我就省下这些书写的功夫,转贴网址给大家吧。
(嗯!我也会参考MSDN的文件,毕竟这是官方文件,最准确!
但我至少会写上「资料来源:微软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节 的后续补充文章。 希望对大家有帮助。
[ASP.NET案例精编--适用于VS2005/2008] 清华大学出版社
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
与本文相关的习题,请看:
2009/9/30 针对本文的题目,我新增一个习题给大家参考 --
[习题] 补充本书第14章(14-2)的范例--自己撰写程序SqlDataSource「新增数据」,并且采用参数(InsertParameters)
本系列 ADO.NET共有下面文章:
- 初探ADO.NET #1,程序与数据库互动的四大步骤 (2010-10-20 08:55)
- 初探ADO.NET #2,DataReader 与 DataSet(资料集) (2010-10-20 08:58)
- ADO.NET #3 (GridView + SqlDataSource)完全手写、后置程序代码,兼论 SqlDataSource与UpdateParameter/DeleteParameter的用法 (2010-10-22 10:04)(难度很高,初学者请略过)
- ADO.NET #4,自己设定输入画面,让SqlDataSource帮我们完成「新增」一笔数据 (2010-10-22 13:55)
- ADO.NET #5,自己设定画面,让SqlDataSource帮我们捞(呈现)数据 (2010-10-22 14:08)
- [习题]ADO.NET #6, DataSet如何新增一笔数据?
- [习题]ADO.NET #7,避免相同数据 重复输入(重复新增)
- [习题]ADO.NET #8,文章(产品)的浏览次数 / 点阅数 / 点击次数,怎么作?
- ......文章 仍在增加中......
范例:
....................................................................................................寄信给我 mis2000lab (at)雅虎.com.台湾 ........
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)