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 

相關文章
相關標籤/搜索