DataBinding?资料绑定? #3--以DropDownList为例
http://www.dotblogs.com.tw/mis2000lab/archive/2008/10/15/databinding_column081015.aspx
本文是一系列的文章,建议您依照顺序来观赏:
请看过前面的文章后,再继续看下去:
DataBinding?资料绑定? #1--DataSourceID与DataSource? (2010-10-28 17:14)
DataBinding?资料绑定? #2--DataSet + 绑定表达式 (2010-10-28 17:25)
跟上一篇文章差不多,我们以 DropDownList为例。
继续讨论 DataSet里面的 DataTable,这次介绍 Column.....
本文会真正使用到 DataBinding,写法单纯多了,
不像上一篇文章这么繁琐
我们继续看看这个例子。
下面的范例,可以放在本书的 14.3节,作为课后补充!
对于 ADO.NET / DataSet不熟悉的朋友,请看上一篇文章 or 本书 13与14两章。
因为这个范例是给本书读者,作为课后的补充。 事先会假设读者已经有底子了
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
=========================================================================
HTML画面的原始码,只有一个 DropDownList控件而已:
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</div>
</form>
画面上只有一个 DropDownList控件,为何能连结数据库?捞出许多资料?
怎么做到的?......................方法很多,但我们采用 DataSet的DataTable来作。
=========================================================================
后置程序代码(for C#):
protected void Page_Load(objectsender, EventArgs e)
{
SqlConnection Conn = new SqlConnection("数据库的连结字符串");
//Conn.Open(); //第一、连结数据库
SqlDataAdapterda = new SqlDataAdapter("select top 10 id,title,summary from test order byid", Conn);
DataSet ds = new DataSet();
da.Fill(ds, "test"); //第二、执行SQL指令,取出数据
//批注:执行SQL指令之后,把数据库捞出来的结果,交由画面上 DropDownList控件来呈现。
DropDownList1.DataValueField = "id"; //在此输入的是数据表的字段名称
DropDownList1.DataTextField = "title"; //在此输入的是数据表的字段名称
DropDownList1.DataSource = ds.Tables["test"].DefaultView;
DropDownList1.DataBind();
//Conn.Close(); //第四、关闭数据库的连接与相关资源
}
后置程序代码(for VB):
Protected Sub Page_Load(ByValsender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Conn As SqlConnection = New SqlConnection("数据库的连结字符串")
'Conn.Open(); '--第一、连结数据库
Dim da AsSqlDataAdapter = New SqlDataAdapter("select top 30 id,title,summary from testorder by id", Conn)
Dim ds As DataSet = New DataSet
da.Fill(ds, "test") '--第二、执行SQL指令,取出数据
'--批注:执行SQL指令之后,把数据库捞出来的结果,交由画面上 DropDownList控件来呈现。
DropDownList1.DataValueField = "id" '--在此输入的是数据表的字段名称
DropDownList1.DataTextField = "title" '--在此输入的是数据表的字段名称
'************** DataBinding **********************
DropDownList1.DataSource = ds.Tables("test").DefaultView
DropDownList1.DataBind()
'Conn.Close() '--第四、关闭数据库的连接与相关资源
End Sub
上面的范例,有出现 DataBinding的动作,
比较看看,跟上一篇文章的作法,有何差异?
上面的 DropDownList控件,请看本书 3.7节,我写了很多范例,很详细。
DropDownList学会了,其它类似的 ListBox / CheckBox.....都大同小异。 学通了,就能举一反三
DataAdapter会自动开启、关闭数据库的联机,所以我们不用手动去控制他。请看本书 14.3节,在此不赘述。
======== 第二种作法 =====================================================================
上面的后置程序代码( forC#),您也可以写成下面这样
protected void Page_Load(object sender,EventArgs e)
{
SqlConnection Conn = new SqlConnection("数据库的连结字符串");
//Conn.Open(); //第一、连结数据库
SqlDataAdapterda = new SqlDataAdapter("select top 10 id,title,summary from test order byid", Conn);
DataSet ds = new DataSet();
da.Fill(ds, "test"); //第二、执行SQL指令,取出数据
//批注:执行SQL指令之后,把数据库捞出来的结果,交由画面上 DropDownList控件来呈现。
//****** 第二种写法 *********************
DropDownList1.DataValueField =ds.Tables["test"].Columns[0].ToString(); //数据表的字段名称
DropDownList1.DataTextField =ds.Tables["test"].Columns[1].ToString(); //数据表的字段名称
//****************************************
DropDownList1.DataSource = ds.Tables["test"].DefaultView;
DropDownList1.DataBind();
//Conn.Close(); //第四、关闭数据库的连接与相关资源
}
后置程序代码( for VB)
Protected Sub Page_Load(ByValsender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Conn As SqlConnection = New SqlConnection("数据库的连结字符串")
'Conn.Open(); '第一、连结数据库
Dim da AsSqlDataAdapter = New SqlDataAdapter("select top 30 id,title,summary from testorder by id", Conn)
Dim ds As DataSet = New DataSet
da.Fill(ds, "test") '第二、执行SQL指令,取出数据
'批注:执行SQL指令之后,把数据库捞出来的结果,交由画面上 DropDownList控件来呈现。
'****** 第二种写法 *********************
DropDownList1.DataValueField = ds.Tables("test").Columns(0).ToString() '--数据表的[字段名称]
DropDownList1.DataTextField = ds.Tables("test").Columns(1).ToString() '--数据表的[字段名称]
'****************************************
DropDownList1.DataSource = ds.Tables("test").DefaultView
DropDownList1.DataBind()
'Conn.Close() '第四、关闭数据库的连接与相关资源
End Sub
上面的范例,有出现 DataBinding的动作,
比较看看,跟上一篇文章的作法,有何差异?
上面的程序(第二种作法),重点解说如下:
- Row ====>列,横的一列,类似数据表(Table)里面一笔一笔的纪录!
- Column==>行,直的一行。就是数据表里面的「字段名称」!
Column 1 / Column 2 / Column3 .......
字段名称1 / 字段名称 2 / 字段名称 3 .......
----------------------------------------------------------------
Row 1 1111111 张小强 班长 .......
Row 2 2222222 马小九 副班长 .......
Row 3 3333333 蓝小丁 风纪股长 .......
当然, DropDownList + SqlDataSource,只要设定几下也能有相同结果出来。
这个范例是另外一种写法,仅供各位参考。
您也可以看看这篇文章,这个范例,我们用 DataSourceID来作数据系结
[习题]两个SqlDataSource,共享一个 GridView