婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ASP.NET Eval進行數據綁定的方法

ASP.NET Eval進行數據綁定的方法

熱門標簽:五常地圖標注 電銷語音自動機器人 凱立德導航官網地圖標注 萊蕪外呼電銷機器人價格 戶外地圖標注軟件手機哪個好用 地圖標注和認領 長春呼叫中心外呼系統哪家好 鄭州400電話辦理 聯通 智能電話營銷外呼系統

假設你已經了解ASP.NET Eval 1.1的數據綁定(特別是Container這個局部變量)的機制,這里主要分析ASP.NET Eval 2.0數據綁定做了那些改進.

ASP.NET Eval 2.0 的數據綁定函數Eval()簡化掉了ASP.NET Eval 1.1神秘的Container.DataItem,比如數據綁定表達式:

復制代碼 代碼如下:

%# (Container.DataItem as DataRowView)["ProductName"].ToString() %>

ASP.NET Eval 1.1簡化為:(去掉了類型指定, Eval通過反射實現,本文不再闡述)
復制代碼 代碼如下:

%# DataBinder.Eval(Container.DataItem, "ProductName").ToString() %>

ASP.NET Eval 2.0又簡化為,去掉了Container局部變量:

%# Eval("ProductName") %>

那么,Page.Eval()又是如何知道"ProductName"是那個數據的屬性呢,即Container.DataItem真的消失了嗎?

ASP.NET Eval()是Page的父類TemplateControl的方法

TemplateControl.Eval()可以自動計算出Container, 機制就是從一個dataBindingContext:Stack堆棧來獲取.

1. 建立DataItem Container 棧:

在Control.DataBind()中,建立,這樣可以保證子控件的DataItem Container始終在棧頂.

復制代碼 代碼如下:

public class Control

{

protected virtual void DataBind(bool raiseOnDataBinding)

{

bool foundDataItem = false; if (this.IsBindingContainer)

{

object o = DataBinder.GetDataItem(this, out foundDataItem);

if (foundDataItem)

Page.PushDataItemContext(o); -- 將DataItem壓入堆棧

}

try

{

if (raiseOnDataBinding)

OnDataBinding(EventArgs.Empty);

DataBindChildren(); -- 綁定子控件

}

finally

{

if (foundDataItem)

Page.PopDataItemContext(); -- 將DataItem彈出堆棧

}

}

}


2. 獲取DataItem Container
復制代碼 代碼如下:

public class Page

{

public object GetDataItem()

{

...

return this._dataBindingContext.Peek(); -- 讀取堆棧頂部的DataItem Container,就是正在綁定的DataItem Container

}

}


3. TemplateControl.Eval()
復制代碼 代碼如下:

public class TemplateControl

{

protected string Eval (string expression, string format)

{

return DataBinder.Eval (Page.GetDataItem(), expression, format);

}

}


結論:

從上面看出Page.Eval()在計算的時候還是引用了Container.DataItem,只不過這個DataItem通過DataItem Container堆棧自動計算出來的.我認為Page.Eval()看似把問題簡化了,其實把問題搞得更加神秘.

您可能感興趣的文章:
  • ASP.NET MVC DropDownList數據綁定及使用詳解
  • AspNetAjaxPager,Asp.Net通用無刷新Ajax分頁控件,支持多樣式多數據綁定
  • asp.net ListView 數據綁定
  • asp.net Repeater 數據綁定的具體實現(圖文詳解)
  • asp.net Repeater 數據綁定代碼
  • asp.net數據綁定DataBind使用方法
  • asp.net 下拉列表無級數據綁定實現代碼
  • ASP.NET框架中的數據綁定概要與數據綁定表達式的使用

標簽:西藏 福州 西寧 湖州 岳陽 紅河 衢州 宣城

巨人網絡通訊聲明:本文標題《ASP.NET Eval進行數據綁定的方法》,本文關鍵詞  ASP.NET,Eval,進行,數據,綁,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET Eval進行數據綁定的方法》相關的同類信息!
  • 本頁收集關于ASP.NET Eval進行數據綁定的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 沧源| 广宗县| 文安县| 昌江| 彰武县| 新平| 清徐县| 沅江市| 宜黄县| 永宁县| 博野县| 渝北区| 丰都县| 和静县| 恩平市| 江都市| 聂拉木县| 乳源| 张掖市| 雷波县| 屯昌县| 沙湾县| 洪湖市| 兴和县| 山阳县| 自贡市| 太谷县| 丽江市| 华宁县| 洱源县| 左权县| 新田县| 桦甸市| 靖安县| 墨竹工卡县| 抚远县| 朔州市| 闽侯县| 青神县| 酒泉市| 厦门市|