程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 深入ASP.NET數據綁定(下)——多樣的綁定方式

深入ASP.NET數據綁定(下)——多樣的綁定方式

編輯:關於ASP.NET

在這個系列的上篇中介紹了數據綁定語法的原理以及.NET中如何實現單向綁定,中篇我們簡單的介紹 了ASP.NET 2.0 中新增的Bind語法配合DataSourceControl來實現數據的自動雙向綁定。這兩部分的內容 相對動態抽象並且不常接觸,沒有很好的源代碼支持很難解釋清楚,要想真正弄清它們的內部原理,還需 要大家親自動手去反編譯分析動態編譯的程序集。

在了解了數據綁定語法的原理後,我還想來談談我中實踐過程中遇到的一些問題以及其它實用的綁定 技巧。首先我們就來說說,特殊字段名的問題。我們知道在數據庫當中,如果表名或字段名中包含有一些 特殊的不能是合法的字符時,都會使用[]將它們引起來,以便他們能夠正常使用。但是在<%# Eval ("")%>的綁定語句當中,同時可以使用[],但是對於字段名中包含 "(",")","[","]"這4個字符卻始終 運行出錯。假設像我下面這樣來綁定"電壓(V)":

<%# Eval("電壓(V)")%>

那麼就會得到一個運行時錯誤:

DataBinding:“System.Data.DataRowView”不包含名為“電壓”的屬性。

表明括號是被認為是一個特殊字符,那我們如果給字段名加上[],如下:

<%# Eval("[電壓(V)]")%>

此時,我們會得到另一個運行時錯誤:

電壓(V 既不是表 DataTable1 的 DataColumn 也不是 DataRelation。

表明,即使加上[]也無法解決這個特殊字段名的問題。同時字段名中如果也存在中括號,也是會出現 這樣的問題的。但是這樣的字段名卻在GridView的自動生成列中能被正常綁定呢?問題會出現在哪裡呢? 分析和對比GridView的自動生成列與Eval這樣的綁定語法在最終執行綁定代碼上的不同,我們可以發現, GridView的自動生成列取值並不是使用DataBinder.Eval這個方法,它內部有自己的取值方式,但是在實 現上卻是大同小異的。那究竟是在哪裡出現了問題呢?我們找出DataBinder類的定義:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved