DataBinding?资料绑定? #2--DataSet + 绑定表达式
http://www.dotblogs.com.tw/mis2000lab/archive/2008/10/15/databinding_datatable081015.aspx
上一篇文章提到 DataBinding
请您先过这两篇文章后,再向下阅读:
DataBinding?资料绑定? (2010-10-28 16:56)
DataBinding?资料绑定? #1--DataSourceID与DataSource? (2010-10-28 17:14)
现在要跟各位分享的范例,也是由 DataSet而来。
这篇文章,我们要讨论 DataSet里面的 DataTable。
自从 ASP.NET 2.0以后,市面上的ASP.NET书籍很少很少提到 ADO.NET,
偏偏很多人没有学过 ASP.NET 1.x版,你直接跳过这段,底层的东西很多人完全不会,只会用 SqlDataSource这种精灵而已。
广告一下,本书是极少数深入讨论 ADO.NET与相关程序的ASP.NET入门书。
事实上,可能ADO.NET程序比较繁琐,所以很多作者略过不谈吧?
下面的范例,可以放在本书的 14.3节,作为课后补充!
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
========================================================
(1)传统ADO.NET的作法(采用DataSet)
========================================================
首先,我们在画面上,简单设定几个 TextBox。
Button按钮一按下去,就会完成数据系结(DataBinding)。
把数据库里面,捞出来的数据,透过 TextBox呈现出来。 先来看看执行成果吧............
HTML设计画面的原始码 (for C# Code Behind):
id :
<asp:TextBox ID="TextBox1" runat="server" Width="30px"></asp:TextBox>
<br />
title : <asp:TextBox ID="TextBox2" runat="server" Width="350px"></asp:TextBox>
<br />
Summary :
<asp:TextBox ID="TextBox3" runat="server" Height="200px"TextMode="MultiLine" Width="450px"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="开始 DataBinding()" />
或许您会问:「学这东西要干嘛? 」
很多初学者也学了ASP.NET一段时间,但说穿了,不就是拉拉 GridView搭配SqlDataSource or AccessDataSource这些精灵画面而已。
想要动手改造一下,发现不容易,被困住了、不知如何下手?
想要自己设计画面来作数据输入、输出,但底子不好。发现很多控件无法跟SqlDataSource or AccessDataSource这些精灵搭配起来(当然啰,那些没有 DataSource / DataSourceID属性的控件,无法搭配啊!)
不学 ADO.NET这些作法,初学者很快就碰壁了。
想想看,有哪一个老板会花钱聘用一位只会「使用VS 2008 / VS 2010精灵」的ASP.NET程序设计师?
当您学完入门的、基础的,就会想要变化更多。 那么,要学的东西当然也更多了。
ADO.NET的 DataReader / DataSet一直都在,
与其求新、抢鲜(跟人家学新的LINQ、ADO.NET Data Service....),为何不回头看看 ADO.NET呢?
底子打稳了,还怕遇上新东西,不能举一反三吗?
ADO是以前ASP的核心,您认为到了 ASP.NET时代,ADO.NET会死掉?或是被立刻淘汰吗?
那么,您学不学?
后置程序代码(VB语法)如下:
写在Button1_Click()事件里面
Dim ConnAs SqlConnection = New SqlConnection("数据库的连结字符串")
'Conn.Open(); '第一、连结数据库
Dim da AsSqlDataAdapter = New SqlDataAdapter("select top1 id,title,summary from test资料表 order by id", Conn)
Dim ds As DataSet = New DataSet()
da.Fill(ds, "test数据表") '第二、执行SQL指令,取出数据
'批注:执行SQL指令之后,把数据库捞出来的结果,交由画面上 TextBox控件来呈现。
'****************************************
TextBox1.Text = ds.Tables("test资料表").Rows(0)(0).ToString()
TextBox2.Text = ds.Tables("test资料表").Rows(0)(1).ToString()
TextBox3.Text = ds.Tables("test资料表").Rows(0)(2).ToString()
'****************************************
'Conn.Close(); '第四、关闭数据库的连接与相关资源
后置程序代码(C#语法)如下:
protected void Button1_Click(objectsender, EventArgs e)
{
SqlConnection Conn = new SqlConnection("数据库的连结字符串");
//Conn.Open(); //第一、连结数据库
SqlDataAdapterda = new SqlDataAdapter("select top 1 id,title,summaryfrom test资料表 order by id", Conn);
DataSet ds = new DataSet();
da.Fill(ds, "test资料表"); //第二、执行SQL指令,取出数据
//批注:执行SQL指令之后,把数据库捞出来的结果,交由画面上 TextBox控件来呈现。
TextBox1.Text = ds.Tables["test资料表"].Rows[0][0].ToString();
TextBox2.Text = ds.Tables["test资料表"].Rows[0][1].ToString();
TextBox3.Text = ds.Tables["test资料表"].Rows[0][2].ToString();
//****************************************
//Conn.Close(); //第四、关闭数据库的连接与相关资源
}
上面的 ADO.NET程序是用DataSet来作,重点解说如下:
- Row ====>列,横的一列,类似数据表(Table)里面一笔一笔的纪录!
- Column==>行,直的一行。就是数据表里面的「字段名称」!
我们看看下一篇文章
就会了解 DataBinding 跟 本文的「 (1)传统ADO.NET作法、(2)系结表达式 + DataBinding」有何差异?
Column 1 / Column 2 / Column3 .......
字段名称1 / 字段名称 2 / 字段名称 3 .......
----------------------------------------------------------------
Row 1 1111111 张小强 班长 .......
Row 2 2222222 马小九 副班长 .......
Row 3 3333333 蓝小丁 风纪股长 .......
我们讨论 DataSet 里面的 DataTable,这东西不难。
您把它当成是一个离线的数据库快取。
我执行SQL指令后,(程序代码 SqlDataAdapter da = new SqlDataAdapter("selecttop 1 .....from test资料表", Conn); )
把数据、数据表、数据表之间的关联....等等,通通放到(塞进)内存里面。(程序代码 da.Fill(ds, "test资料表"); )
这样一来,存取复杂关联的数据,就很方便操作了。
DataAdapter会自动开启、关闭数据库的联机,所以我们不用手动去控制他。 请看本书 14.3节,在此不赘述。
上面的例子,是传统的 ADO.NET写法,其实并没有 DataBinding的动作
========================================================
(2). DataBinding + 绑定表达式(DataBinding Expressions)
========================================================
2008/10/17 补充
如果要让这个例子,加上 DataBinding,就必须使用「绑定表达式」,例如:<%# %>
HTML画面的原始码:
id : <asp:TextBox ID="TextBox1" runat="server" Width="30px"Text="<%#myTextBox1 %>"></asp:TextBox>
<br />
title : <asp:TextBox ID="TextBox2" runat="server"Width="350px" Text="<%#myTextBox2%>"></asp:TextBox>
<br />
Summary : <asp:TextBox ID="TextBox3" runat="server"Height="200px" TextMode="MultiLine" Width="450px"Text="<%#myTextBox3 %>"></asp:TextBox>
<br />
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click"Text="开始 DataBinding()" />
后置程序代码 fot C#
public string myTextBox1, myTextBox2, myTextBox3;
//----------------------------------------------------------------------------
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("<hr>**** DataBinding() ****<hr>");
SqlConnection Conn = new SqlConnection("数据库的连结字符串");
SqlDataAdapter da = new SqlDataAdapter("select top 1 id,title,summary fromtest order by id", Conn);
DataSet ds = new DataSet();
da.Fill(ds, "test"); //第二、执行SQL指令,取出数据
//批注:执行SQL指令之后,把数据库捞出来的结果,交由画面上 三个 TextBox控件来呈现。
myTextBox1 = ds.Tables["test"].Rows[0][0].ToString();
myTextBox2 = ds.Tables["test"].Rows[0][1].ToString();
myTextBox3 = ds.Tables["test"].Rows[0][2].ToString();
Page.DataBind(); //*** 重点!重点!!***
}
关于 "绑定表达式(DataBinding Expressions)"的作法,
本书第八章,解释「样版 (Template)」有说明,请看本书 8.2节。
或是观赏微软MSDN文件: http://msdn.microsoft.com/zh-tw/library/ms178366.aspx
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
....................................................................................................寄信给我 mis2000lab (at)雅虎.com.台湾 ........
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)

【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步