MIS2000 Lab. -- ASP.NET学习&分享 / ASP.NET案例精编(清华大学出版社)
您好,我来自台湾。很高兴与各位分享一些成果。希望对您有帮助。出版书籍是「ASP.NET案例精编 / 清华大学出版社」。

ADO.NET #5,自己设定画面,让SqlDataSource帮我们捞(呈现)数据

http://www.dotblogs.com.tw/mis2000lab/archive/2008/09/22/sqldatasource_select_0922.aspx

 

 

本文内容需要具备一些基础,不建议初学者观赏。

本范例采用的 test数据表,与本书范例相同,这些范例来不及在书上发表,如今在网络上为读者介绍,当成售后服务。
请您具备本书 GridView第九章、ADO.NET第十三&十四章的基础后,才来观摩本范例。

已经购买本书的读者,这几个范例,可以当成书本 14.2 的后续补充文章。   希望对大家有帮助。

 

  

一般来说,我们提到 SqlDataSource或是AccessDataSource,都是透过 GridView / ListView这种大型的、多功能的「数据系结控件」。

因为两者搭配(DataSource控件 + 数据系结控件),有方便的精灵画面,一步一步完成后,就OK啦。

简单又方便、功能又强大。各位可以简单的看看我写的这篇文章(PDF檔).....文章下载

 

但是,如果客户不想用固定的样版,非得自己设计不可。

想用其它的 Web控件来组合、展示数据,例如:TextBoxLabel这些简单的Web控件,该怎么作呢?

这种简单型的Web控件,就要自己动动手写一点程序,才能完成!

 

上一篇文章,我们已经完成「新增(Insert)」数据的范例,

现在我们将要利用「SqlDataSource帮我们完成的 Select指令」,自己设定 [数据输出] 的画面

这个范例在MSDN文件上找不到,因为SqlDatasource的 Selecting事件没范例,所以我整理一下分享出来。

 

先看看执行成果吧(画面如下),

当我们点选 DropDownList 的文章标题,

底下的几个 Label / TextBox控件,就会出现这篇文章  各个字段的内容。

 

 

---------------------------------------------------------------------------------------------------------------------------------

这个范例,我们同时以  DataReader DataSet 两种方法来撰写(共有两支程序)。

如果您不懂 ADO.NET、DataReader与 DataSet.....请看看这篇文章-- 初探ADO.NET #2,DataReader 与 DataSet(资料集)

--------------------------------------------------------------------------------------------------------------------------------- 


动手写程序  ---- 完成上面的基础观念后,我们开始写程序

 

 1.  HTML画面设计。

上方,我们使用 DropDownList控件 + SqlDatasource(名为SqlDataSource_dropdownlist)。完整设定画面,可以参考本书 9.4节(P.9-46),这是很入门的基础设定(或参考下图)。

下方,有一个 Label控件、数个 TextBox控件,拉进来就好,不特别。

 

最下方还有一个 SqlDataSource1,这个满重要的!我整本书的第九章,都在练习这个设定。请看本书9.5.1,SqlDataSource的「WHERE」子句,这里设定很重要,学会了可以有很多变化。

(以DataReader 来写,先把 SqlDataSource1的 DataSourceMode属性设定为 DataReader

ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)

http://www.china-pub.com/46063 

2009/5/15上市

市场价 :¥59.80 RMB(人民幣)

 

ASP.NET案例精编--适用于VS2005/2008

 

HTML画面原始码如下( .aspx档案)(DataReader版):

01     <asp:DropDownList ID="DropDownList1" runat="server"  
02         AutoPostBack="True" DataSourceID="SqlDataSource_dropdownList" DataTextField="title"  
03         DataValueField="id">
04         </asp:DropDownList>
05     </span> 


06     <asp:SqlDataSource ID="SqlDataSource_dropdownList" runat="server"  
07         ConnectionString="<%$ ConnectionStrings:testConnectionString1 %>"  
08         SelectCommand="SELECT [id], [title] FROM [test]"></asp:SqlDataSource> 


09         <br class="style3" />
10         <span class="style3">文章的详细内容,会出现在下面的控件</span><br class="style3" />
11         <br />
12     id ----<asp:Label ID="Label_id" runat="server"></asp:Label>
13     &nbsp;&nbsp;&nbsp; <span class="style1"> <span class="style5">[DataReader版]</span></span><br />
14     <br />
15     Title----<asp:TextBox ID="TextBox_title" runat="server"></asp:TextBox>
16     <br />
17     <br />
18     Summary--<asp:TextBox ID="TextBox_summary" runat="server"></asp:TextBox>
19     <br />
20     <br />
21     Article--<asp:TextBox ID="TextBox_article" runat="server" Height="150px"  
22         TextMode="MultiLine" Width="480px"></asp:TextBox>
23     <br />
24     <br />
25     Author--<asp:TextBox ID="TextBox_author" runat="server"></asp:TextBox>


26     <asp:SqlDataSource ID="SqlDataSource1" runat="server"  
27         ConnectionString="<%$ ConnectionStrings:testConnectionString1 %>"          
28         
29         SelectCommand="SELECT [id], [title], [summary], [article], [author] FROM [test]WHERE ([id] = @id)"  
30         DataSourceMode="DataReader" >
31         <SelectParameters>
32             <asp:ControlParameter ControlID="DropDownList1" Name="id"  
33                 PropertyName="SelectedValue" Type="Int32" />
34         </SelectParameters>
35     </asp:SqlDataSource>

 

 

 

---------------------------------------------------------------------------------------------------------------------------------

2. 后置程序代码 (第一支程序,DataReader版)

  • 重点---- 10~11行,用 IDataReader接住「捞出来的数据」,再由其它Web控件来呈现。
  •  
  • 必须用 .Read() 进行读取,才会成功(这是DataReader的特性)

01 Protected Sub DropDownList1_SelectedIndexChanged() SubDropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)HandlesDropDownList1.SelectedIndexChanged
02         SqlDataSource1.DataSourceMode= SqlDataSourceMode.DataReader
03         '== 如果 DataSourceMode 属性设为 DataReader 值,则会传回 IDataReader 物件。
04         '== 当完成读取数据时,请关闭 IDataReader 对象。
05
06         Dim args As New DataSourceSelectArguments
07         '== DataSourceSelectArguments 提供一项机制,让数据系结控件于撷取数据时
08         '== 用来向数据来源控件要求数据相关的作业。
09
10         Dim I_DR As IDataReader =CType(SqlDataSource1.Select(args), IDataReader)
11
12         I_DR.Read()  '*****  重点!! *****
13
14         Label_id.Text =I_DR.Item("id").ToString()
15         TextBox_title.Text =I_DR.Item("title").ToString()
16         TextBox_summary.Text =I_DR.Item("summary").ToString()
17         TextBox_article.Text =I_DR.Item("article").ToString()
18         TextBox_author.Text =I_DR.Item("author").ToString()
19
20         '== 当完成读取数据时,请关闭 IDataReader 对象。
21         I_DR.Close()
22         I_DR.Dispose()
23 End Sub

 

 ====================================================================

 

后置程序代码 (第二支程序,DataSet 

  • 倘若要改成 DataSet的写法,  上一个步骤的HTML画面(.aspx档案)。先把 SqlDataSource1的 DataSourceMode属性设定为 DataSet
  •  
  • 重点----用 DataView接住「捞出来的数据」,再由其它Web控件来呈现。

01 Protected Sub DropDownList1_SelectedIndexChanged() SubDropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles DropDownList1.SelectedIndexChanged
02         Dim args As New DataSourceSelectArguments
03         '== DataSourceSelectArguments 提供一项机制,让数据系结控件于撷取数据时,
04         '== 用来向数据来源控件要求数据相关的作业。
05
06         Dim dv As DataView =CType(SqlDataSource1.Select(args), DataView)
07
08         Label_id.Text =dv.Table(0).Item("id").ToString
09         TextBox_title.Text =dv.Table(0).Item("title").ToString()
10         TextBox_summary.Text =dv.Table(0).Item("summary").ToString()
11         TextBox_article.Text =dv.Table(0).Item("article").ToString()
12         TextBox_author.Text =dv.Table(0).Item("author").ToString()
13
14         dv.Dispose()
15 End Sub

 

 

---------------------------------------------------------------------------------------------------------------------------------

程序执行画面如下:

当我们点选 DropDownList 的文章标题,

底下的几个 Label / TextBox控件,就会出现这篇文章  各个字段的内容。

 --------------------------------------------------------------------------------------------------------------------------------- 

 

 本文介绍的两个程序,请由此下载----Sample_2.rar

很多基础的东西,如果您看不懂,可能是一些基础还不稳固。

本文是补齐书本内的不足、也是本书的售后服务,(假设本文的读者已经有基础、或是看完本书了)因此很多基础设定都跳过去了,请见谅。

 

 

 

自从ASP.NET 2.0面市以来,因为新功能太多了(介绍不完),很少有书本会介绍 ADO.NET,

大多以 SqlDatasource或  AccessDataSource来解说。

甚至有人说:「SqlDataSource已经取代 ADO.NET」(大错特错的说法!)

 

ADO.NET才是 .NET数据存取的核心,地位等同于以前ASP时代的「ADO」,不可能被取代。

 

只会使用 SqlDataSource现成的设定、精灵,一下子就遇见瓶颈了。

很多讨论区都有类似的问题,初学者学会一些VS 2005/2008/2010的操作后,终究还是得面临ADO.NET的实作!

要更进一步提升功力,还是要了解ADO.NET观念、动手实作

 

我出版的书,对于ADO.NET观念(第十三章)手写ADO.NET程序(第十四章)

花了两大章去介绍各种范例(合计124),是一大特点。希望对大家有帮助。

 

ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)

http://www.china-pub.com/46063 

2009/5/15上市

市场价 :¥59.80 RMB(人民幣)

 

ASP.NET案例精编--适用于VS2005/2008

   

 

 

 

本系列共有下面文章:

范例:

 

 

posted on 2010-10-22 14:08  MIS2000 Lab.  阅读(264)  评论(0编辑  收藏  举报


ASP.NET案例精编——适用于VS 2005/2008(配光盘)
 

当当网购买 http://product.dangdang.com/product.aspx?product_id=20583373&ref=search-1-pub