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

DataBinding?资料系结?资料绑定? #4--系结表达式原来可以这样用?(DataSet / DataReader)

http://www.dotblogs.com.tw/mis2000lab/archive/2008/12/29/databinding_expression_1229.aspx

 

 

之前分享过几篇文章:

 

在 GridView / ListView这种大型控件(数据绑定控件)里面,只要作了「样版(Template)」,

我们就会发现一些Web控件可以跟数据库的各个字段结合,大多写成

  • <%# Bind("字段名称") %> ,就是双向绑定。数据可以修改。
  • 或是<%# Eval("字段名称") %> ,就是单向绑定,数据只能用来展示。

 例如下面的范例:

01 <asp:GridView ID="GridView1" runat="server" DataKeyNames="id" DataSourceID="SqlDataSource1">
02  
03            <Columns>
04                <asp:TemplateField HeaderText="分类" SortExpression="class">
05                    <EditItemTemplate>
06                        <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1"
07                            DataTextField="class" DataValueField="class" SelectedValue='<%# Bind("class") %>'>
08                        </asp:DropDownList>
09                    </EditItemTemplate>
10                    <ItemTemplate>
11                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("class") %>'></asp:Label>
12                    </ItemTemplate>
13                </asp:TemplateField>
14  
15 .....以下省略....
16 </asp:GridView>

 

 

今天看书的时候,又发现绑定表达式(Data Binding Expression)  原来可以这样用 

 

这边要分享两个小范例,可能不太实用。各位参考一下即可。

自己写ADO.NET程序,透过绑定表达式,传到前端HTML画面的 Web控件里面。

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

 

HTML设计画面都一样


各位可以看看下面两个 Web控件,使用了 <%# DBInit()%>

01        <asp:TextBox ID="TextBox1" runat="server" Height="200px"  
02                  TextMode="MultiLine"  
03                  Width="350px"Text="<%# DBInit()%>"></asp:TextBox>
04      <br />
05      <br />
06  
07    <asp:DropDownList ID="DropDownList1" runat="server"  
08            DataSource="<%# DBInit()%>" DataTextField="title"  
09            DataValueField="id">
10     </asp:DropDownList>

 

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

后置程序代码如下(VB语法)

 

1. DataSet


01     Protected Sub Page_Load() Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
02         Page.DataBind()  '==重点在此!没这段的话,不会运作!!
03     End Sub
04
05
06     Public Function DBInit() Function DBInit() As DataSet
07         '----连结数据库----
08         Dim Conn As New SqlConnection("your_ConnectionString")
09         Dim myAdapter As SqlDataAdapter
10         myAdapter = New SqlDataAdapter("select top 10 id, title from test", Conn)
11
12         Dim ds As New DataSet()
13
14         'Conn.Open()   '---- 不用写,DataAdapter会自动开启
15         myAdapter.Fill(ds, "test")    '---- 这时候执行SQL指令。取出数据,放进 DataSet。
16         'Conn.Close()   '---- 不用写,DataAdapter会自动关闭
17
18         Return ds
19     End Function

 

 执行结果:

   

 

 

 

2. DataReader


01     Protected Sub Page_Load() Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
02         Page.DataBind()  '==重点在此!没这段的话,不会运作!!
03     End Sub
04
05
06     Public Function DBInit() Function DBInit() As SqlDataReader
07         
08         Dim Conn As New SqlConnection("Your_ConnectionString")
09         Dim dr As SqlDataReader = Nothing
10         Dim cmd As SqlCommand = New SqlCommand("select top 10 id, title from test", Conn)
11         Conn.Open()  
12         dr = cmd.ExecuteReader()  
13
14         Return dr
15
16         cmd.Cancel()
17         dr.Close()
18         Conn.Close()
19         Conn.Dispose()
20     End Function

 

 

最重要的地方,还是那一行程序 --  Page.DataBind()

没有作 DataBind()的话,那些系结表达式(<%#Bind("xxx")%>)是不会动作的!

 

我临时还想不到这样的范例,可以用在哪些地方,

但毕竟也是一个有趣的用法。

于是自己作一个简单的学习记录

 

微软官方文件如下:

 

 

 

2010/10/12补充:

    以上面的方法来作另外一个习题,却发现另外一个有趣的东西,

    请看: [习题]DataBinding?资料系结?资料绑定? #6 -- 伤脑筋的 GridView加总、小计

 

 

 

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


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

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