数据绑定服务器控件[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 wangfeng66 的 blog

数据绑定服务器控件

数据绑定概述和语法
asp.net 引入了新的声明性数据绑定语法。这种非常灵活的语法允许开发人员不仅可以绑定到数据源,而且可以绑定到简单属性、集合、表达式甚至是从方法调用返回的结果。下表显示了新语法的一些示例。


简单属性 customer: <%# custid %>
集合 orders: <asp:listbox id="list1" datasource='<%# myarray %>' runat="server">
表达式 contact: <%# ( customer.first name + " " + customer.lastname ) %>
方法结果 outstanding balance: <%# getbalance(custid) %>

尽管该语法看起来与 asp 的 response.write 快捷方式 <%= %> 相似,但其行为完全不同。asp response.write 快捷方式语法在处理页时计算,而 asp.net 数据绑定语法仅在调用 databind 方法时计算。

databind 是页和所有服务器控件的方法。当在父控件上调用 databind 时,它级联到该控件的所有子控件。例如,datalist1.databind() 将因此对 datalist 模板中的每一控件调用 databind 方法。在页上调用 databind — page.databind() 或只是 databind() — 会导致计算页上的所有数据绑定表达式。通常从 page_load 事件调用 databind,如下例所示。


protected void page_load(object src, eventargs e) {
    databind();
}


protected sub page_load(src as object, e as eventargs)
    databind()
end sub


protected function page_load(src:object, e:eventargs) : void {
    databind();
}

如果绑定表达式在运行时计算为预期的数据类型,则可以在 .aspx 页的声明节中的几乎任何位置使用绑定表达式。上面的简单属性、表达式和方法示例在计算时向用户显示文本。这些情况下,数据绑定表达式必须计算为 string 类型的值。在集合示例中,数据绑定表达式计算为 listbox 的 datasource 属性的有效类型值。您可能会发现有必要转换绑定表达式中的类型值以产生所需的结果。例如,如果 count 是整数:


number of records: <%# count.tostring() %>


绑定到简单属性
asp.net 数据绑定语法支持绑定到公共变量、页的属性和页上其他控件的属性。

下面的示例说明如何绑定到公共变量和页上的简单属性。注意这些值在 databind() 调用前初始化。
 

<html>
<head>
 
    <script language="c#" runat="server">

        void page_load(object sender, eventargs e) {
            page.databind();
        }
        
        string custid{
            get {
                return "alfki";
            }
        }
        
        int ordercount{
            get {
                return 11;
            }
        }


    </script>

</head>
<body>

    <h3><font face="宋体">到页属性的数据绑定</font></h3>

    <form runat=server>
   
        客户:<b><%# custid %></b><br>
        未结的订单:<b><%# ordercount %></b>

    </form>

</body>
</html>

下面的示例说明如何绑定到另一控件的属性。

<html>
<head>
 
    <script language="c#" runat="server">

        void submitbtn_click(object sender, eventargs e) {
        
          // 仅调用“page.databind”,而不是从“statelist”
          // 中显式取出变量,然后操作标签控件。
          // 这将计算页内所有的 <%# %> 表达式
         
          page.databind();
        }

    </script>

</head>
<body>

    <h3><font face="宋体">到另一个服务器控件的属性的数据绑定</font></h3>

    <form runat=server>

        <asp:dropdownlist id="statelist" runat="server">
          <asp:listitem>ca</asp:listitem>
          <asp:listitem>in</asp:listitem>
          <asp:listitem>ks</asp:listitem>
          <asp:listitem>md</asp:listitem>
          <asp:listitem>mi</asp:listitem>
          <asp:listitem>or</asp:listitem>
          <asp:listitem>tn</asp:listitem>
          <asp:listitem>ut</asp:listitem>
        </asp:dropdownlist>
        
        <asp:button text="提交" onclick="submitbtn_click" runat=server/>
        
        <p>
        
        选定的州:<asp:label text='<%# statelist.selecteditem.text %>' runat=server/>
        
    </form>

</body>
</html>

绑定到集合和列表

像 datagrid、listbox 和 htmlselect 这样的列表服务器控件将集合用作数据源。下面的示例说明如何绑定到通常的公共语言运行库集合类型。这些控件只能绑定到支持 ienumerable、icollection 或 ilistsource 接口的集合。最常见的是绑定到 arraylist、hashtable、dataview 和 datareader。


下面的示例说明如何绑定到 arraylist。

<html>
<head>
 

    <script language="c#" runat="server">

        void page_load(object sender, eventargs e) {

            if (!page.ispostback) {

               arraylist values = new arraylist();

               values.add ("in");
               values.add ("ks");
               values.add ("md");
               values.add ("mi");
               values.add ("or");
               values.add ("tn");

               dropdown1.datasource = values;
               dropdown1.databind();
            }
        }

        void submitbtn_click(object sender, eventargs e) {
           label1.text = "您选择了:" + dropdown1.selecteditem.text;
        }

    </script>

</head>
<body>

    <h3><font face="宋体">数据绑定 dropdownlist</font></h3>

    <form runat=server>
   
        <asp:dropdownlist id="dropdown1" runat="server" />

        <asp:button text="提交" onclick="submitbtn_click" runat=server/>

        <p>
        
        <asp:label id=label1 font-name="宋体" font-size="10.5pt" runat="server" />

    </form>

</body>
</html>

下面的示例说明如何绑定到 dataview。注意 dataview 类在 system.data 命名空间中定义。

<%@ import namespace="system.data" %>

<html>
<head>
 

    <script language="c#" runat="server">

        void page_load(object sender, eventargs e ) {
        
            if (!page.ispostback) {
           
                datatable dt = new datatable();
                datarow dr;

                dt.columns.add(new datacolumn("整数值", typeof(int32)));
                dt.columns.add(new datacolumn("字符串值", typeof(string)));
                dt.columns.add(new datacolumn("日期时间值", typeof(datetime)));
                dt.columns.add(new datacolumn("布尔值", typeof(bool)));

                for (int i = 1; i <= 9; i++) {
               
                    dr = dt.newrow();

                    dr[0] = i;
                    dr[1] = "项 " + i.tostring();
                    dr[2] = datetime.now;
                    dr[3] = (i % 2 != 0) ? true : false;

                    dt.rows.add(dr);
                }
           
                datagrid1.datasource = new dataview(dt);

本文关键:数据绑定
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top