WebForm页面数据绑定总结

 总述

绑定语法javascript

 

第一种: <%= str%>html

例子:'<%= DateTime.Now %>'
适用条件:用于非服务器端控件的属性

第二种: <%= str%>

从出现的位置来看,除了能出如今第一种代码块出现的全部位置外,他还能够出如今服务器端控件的属性中。java

从绑定的变量类型上看,他还能够配合ASP.NET的数据绑定类控件,来绑定上述的第四种“变量”类型,就是数据集合(DropDownList,DataList,DataGrid,ListBox这些是数据绑定类控件,数据集合包括ArrayList(数组),Hashtable(哈稀表,DataView(数据视图),DataReader等)。数组

用法上看,在前台代码中除了在相应位置写上<%# %>外,在后台代码中,还须要使用DataBind()方法服务器

前台绑定位置

通常来讲,在前台代码的三种位置可能会用到(绑定)后台变量:函数

  1. 服务器端控件属性或HTML标签属性
  2. JavaScript代码中
  3. Html显示内容的位置(也就是开始标签与结束标签之间的内容,如<div>这里</div>(Html标签)或者<asp:Label ID="Label2" runat="server" Text="Label">这里</asp:Label>(服务器端控件),它做为占位符把变量显示于符号出现的位置)
第一种控件和HTML标签属性绑定

属性值绑定必须知足属性值约束:spa

属性值不能是常量。好比服务器控件Runat必须是"server"3d

属性值数据类型必须正确code

第二种 javascript函数变量的绑定server

通常只要绑定的后台变量和JavaScript中数据类型兼容便可

第三种 内容绑定

服务器控件内容的绑定

(1)约束型控件:这类控件要求它的开始标签和结束标签中只能包含指定的子控件,所以若是在这里出现代码块,将编译错误。例如:

<asp:DataList runat="server"></asp:DataList>,在它之间,要求必须嵌套<ItemTemplate></ItemTemplate>。

(2)非嵌套类控件:这类控件,不容许在内部嵌套其余控件或标签,只能是常量字符串,它会将开始标签和结束标签中常量字符串内容做为他的属性。例如上面提到的TextBox,它会将标签间内容做为它的Text属性值。

(3)嵌套类控件:这类控件,能够嵌套其余任意控件,也能够包含字符串,所以能够正常显示绑定代码块所表示的字符串内容。例如Label控件、Panel等。

(4)数据绑定类控件:这类控件是ASP.NET提供的服务器端控件,除了能够绑定普通的变量类型,也能够绑定一个数据集合(只能采起下面的第二种方式实现)。

 

后台可绑定变量

  • 成员变量
  • 方法或属性的返回值
  • 表达式,也就是全部后台可以执行的代码,运行后所获得的值(也就是直接将后台代码写在前台代码中,记得使用彻底限定名或在后台中using相关namespace)
  • 数据集合
后台变量条件

(1)变量修饰符要求。变量是静态或者实例字段都可。对于代码隐藏模式的ASP.NET,以上的所述的变量必须为public或protected类型(由于是基类与派生类的关系),private或者internal都不行,而代码嵌入模式则任何修饰符的变量都可访问(一个类内部的关系)。

(2)变量类型要求。因为前台属性通常是字符串类型,而JavaScript基本类型也就是字符串型、数字型、布尔型,所以对应的变量应该也是这几种方式,其他类型若是不被支持(如复杂类型、数组、引用类型等),前台获取的就是调用了变量的ToString()方法所获得的字符串。所以,在绑定时,要根据状况看是否能进行隐式类型转换,必要时还要用相关函数来强制转换,以保证前台能够得到正确的值。固然,对于数据绑定类控件,它的有些属性能够为数据集合,但这时的绑定只能经过下面第二种方式才被支持。


1.绑定样式
前台绑定片断
<span style='<%#ConvertColor(Eval("PA_STATUS").ToString())%>'><%#Eval("PA_STATUS")%></span></div></td>

后台方法片断

protected string ConvertColor(string status)
        {
            int value = int.Parse(status);
            switch (value)
            {
                case 0:
                    return "color:black";

                case 1:
                    return "color:green";

                case 2:
                    return "color:red";
                default:
                    return "";

            }

        }

 


2.绑定后台定义的方法
前台绑定片断
 <td><div><span ><%#ConvertStatus(Eval("PA_STATUS").ToString())%></span></div></td>

后台定义的方法

protected string ConvertStatus(string status)
        {
            int value = int.Parse(status);
            switch (value)
            { 
                case 0:
                    return "待处理";
                 
                case 1:
                    return "处理成功";
                  
                case 2:
                    return "处理失败";
                default:
                    return "";

            }
        
        }

 

如何绑定多个变量
   <asp:LinkButton ID="lbtnID" runat="server" CausesValidation="False" CommandName="Status" CommandArgument='<%#Eval("ID")+","+Eval("Status")+","+Eval("TypeID")%>' Style="color: #0063dc;" ><span ><%#Eval("Status").ToString() == "0" ? "未审核" : "撤销审核"%></span></asp:LinkButton>

 资料来源:

 http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html 

相关文章
相关标签/搜索