zoukankan      html  css  js  c++  java
  • 数据绑定

    1.<%#%>

    后台CS:

        public string name, id;
        public int age;
        protected void Page_Load(object sender, EventArgs e)
        {
            name = "Lily";
            id = "002";
            age = 14;
            Page.DataBind();//必须有
        }

    前台:

        <div> 姓名:<%#name %><br/>学号:<%#id %><br/>年龄:<%#age %></div>

    *CS代码中的变量必须是public才可以被页面使用

    必须调用Page.DataBind(),<%#%>绑定才有效

    2.<%=%>

    后台CS:

        public string name, id;
        public int age;
        protected void Page_Load(object sender, EventArgs e)
        {
            name = "Lily";
            id = "002";
            age = 14;
         }

    <%=%>类似于Response.Write;

    <%#%>专用于数据绑定,可以绑定一些变量或者数据源中的东西,中间绑定是数据源的条目,若需其起作用,必须调用DataBind()方法

    2.动态绑定服务器控件的属性值(以绑定Image的ImageUrl为例)

    前台

           <asp:DropDownList runat="server" ID="drop" AutoPostBack="true">
        <asp:ListItem Text="image3" Value="image/3.jpg">image3</asp:ListItem>
        <asp:ListItem Text="image4" Value="image/4.jpg">image4</asp:ListItem>
        <asp:ListItem Text="image5" Value="image/5.jpg" Selected="True">image5</asp:ListItem>
       
        </asp:DropDownList>
       <asp:Image runat="server" ID="ima" ImageUrl="<%#drop.SelectedItem.Value %>"/>

    后台CSS:  Page.DataBind()

    这样就动态绑定了ImageUrl

    DataBinder类绑定

    DataBinder类绑定的好处是会自动执行类型转换

    格式:DataBinder.Eval(数据项的命名容器,数据字段名称,格式字符串)

    在DataList,DataGrid,Repeater等能够显示多笔数据的服务器控件的模板中,数据项的命名容器永远是Container.DataItem

    Container:代表绑定到数据源的父控件;DataItem代表父控件正在处理的数据记录

    格式化字符串:中国货币{0:C}或string.Format("{0:C}",price),{0:¥0,0000.00}都可

            时间:{0:d}{0:yyyy-mm-dd}

             <ItemTemplate>
           <table>
           <tr><td colspan="2"> <span style="color:Fuchsia";>Here is The Message</span></td></tr>
           <tr>
           <td>number:</td><td><%#DataBinder.Eval(Container.DataItem,"number") %></td>
           </tr><tr>
           <td>name:</td><td><%#DataBinder.Eval(Container.DataItem,"uname") %></td>
           </tr><tr>
           <td>country:</td><td><%#DataBinder.Eval(Container.DataItem,"country") %></td>
           </tr>
           <tr><td>Salary:</td><td><%#DataBinder.Eval(Container.DataItem, "pay", "{0:¥#,##0.00}")%></td></tr>
           </table>
           </ItemTemplate>

    Eval方法和Bind方法区别:

    Eval是静态方法(只读),该方法采用数据字段的值作为参数并将其作为字符串返回。

    Bind方法支持读写功能,可以检索数据绑定控件的值并将任何更改提交回数据库。

    Eval方法在运行时调用DataBInder对象的Eval方法,同时引用命名容器的当前数据项,命名容器通常是包含完整记录的数据绑定控件的最小组成部分,如GridView控件中的一行。因此对数据帮当控件的模板内的绑定使用Eval方法。Eval方法以数据字段的名称作为参数,从数据源的当前记录返回一个包含该字段值的字符串。

    Bind方法:在ASP.NET中,数据绑定控件可自动使用数据源控件的更新、删除、和插入操作。如果,已为数据源控件定义了SqlSelect、insert、Update、delete语句,则通过使用GridView等控件模板中的方法,就可以使控件从模板中的子空间中提取值,并将这些值传递给数据源控件,数据数据源控件将执行适当的数据库命令。因此,在数据绑定控件的EditItemTemplate,InsertItemTemplate中要使用Bind函数。

    Bind方法通常与输入控件一起使用,例如编辑模式中的GridView行所呈现的TextBox控件,当数据绑定控件将输入控件作为自身呈现的一部分创建时,可使用该方法提取输入值

    <asp:TextBox runat="server" ID="text" Text='<%#Bind("uname") %>'> 


    DataBinder.Eval的基本格式 DataBinder.Eval(Container.DataItem,"XXX","{0}") <%# DataBinder.Eval(Container.DataItem,"xxxx")%> <%# DataBinder.Eval(Container,"DataItem.xxxx")%> 问题1、他们是有什么不同? 问题2、他们是否可以相互替换? 问题3、DataBinder.Eval(Container.DataItem,"") 这个Container和DataItem分别都是什么? 答1:Eval是对数据的只读绑定,被绑定的子控件所属的父控件(比如GridView)不能用此子控件接收用户输入的修改。Bind是双向绑定,所谓双向,是数据源---显示界面的双向数 据流动,即读/写。 答2:Eval可以替换为Bind,但会降低性能;反之不能替换。 答3:Container即容器,指父控件;DataItem指父控件所绑定的数据源的当前行,不是字段。 如果只是显示值<%#Eval("字段名")%>就可以了. 如果是要修改值<%#Bind("字段名")%>就可以了. 以下两种的显示是相同的 <%# Eval("name") %> <%# DataBinder.Eval(Container.DataItem,"sex") %>

  • 相关阅读:
    写代码如坐禅:你是哪一类程序员
    开发企业应用系统需要掌握的知识技能(转)
    (转)谈谈多线程的思维方式
    深入理解JavaScript定时机制
    (转)javascritp对fckeditor编辑器操作
    JavaScript异步编程的Promise模式
    (转)jquery调WCF
    (转)《代码大全》学习笔记:第10,11,12,13章 关于变量的使用,命名等
    编程:是一门艺术(转)
    禅修程序员十诫(转)
  • 原文地址:https://www.cnblogs.com/huangll/p/2782948.html
Copyright © 2011-2022 走看看