asp.net数据服务控件和数据绑定技术

来源:互联网 发布:淘宝网投诉电话是多少 编辑:程序博客网 时间:2024/05/12 16:21
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.
原创粉丝点击