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

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(人民幣)

 

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

 

 

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

(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(人民幣)

 

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

   
posted on 2010-10-28 17:25  MIS2000 Lab.  阅读(424)  评论(0编辑  收藏  举报


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

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