扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開(kāi)發(fā)

本站首頁(yè) 軟件開(kāi)發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開(kāi)發(fā)公司 >> .Net技術(shù) >> 文章正文

深入了解數(shù)據(jù)源控件Data Souce controls

新的數(shù)據(jù)源控件和數(shù)據(jù)綁結(jié)構(gòu)是很棒的特性,它可以簡(jiǎn)化程序的調(diào)試時(shí)間(尤其是對(duì)簡(jiǎn)單需求和沒(méi)有太多framewark知識(shí)的人)。然而,對(duì)于一個(gè)核心開(kāi)發(fā)者來(lái)說(shuō),因?yàn)榉庋b而不是很正確完整的了解數(shù)據(jù)綁定的結(jié)構(gòu),是很是問(wèn)題和不幸的,沒(méi)有很完善的文檔來(lái)說(shuō)明它.... 我將解釋一些不易理解的“magic”。

BaseDataBoundControl
被設(shè)計(jì)為使用 ASP.NET 數(shù)據(jù)源控件的數(shù)據(jù)綁定控件從 BaseDataBoundControl 控件類派生,該控件類定義基數(shù)據(jù)綁定控件的功能。這個(gè)類有下面的公共方法。

virtual object DataSource { get; set; }
virtual string DataSourceId { get; set; }

和下面的受保護(hù)的方法
protected abstract void PerformSelect();
protected abstract void ValidateDataSource(object dataSource);

第一個(gè)(DataSource)我們用來(lái)綁定數(shù)據(jù)在asp.net 1.x.第二個(gè)(DataSouceID)是使一個(gè)數(shù)據(jù)綁定控件“工作”在一個(gè)數(shù)據(jù)源控件上。當(dāng)設(shè)置 DataSource 屬性時(shí),將調(diào)用 ValidateDataSource 方法,它驗(yàn)證數(shù)據(jù)綁定控件綁定到的對(duì)象是它可以使用的對(duì)象(通常是IListSource,IEnumerable或者IDataSouce).更多的受保護(hù)方法回來(lái)在再講.

如果你更改DataSouceID在數(shù)據(jù)綁定控件初始化后,就會(huì)立刻顯式調(diào)用DataBind方法。注意如果你在PreLoad之前設(shè)置DataSouceID,DataBind方式不會(huì)被調(diào)用。

這個(gè)類參與的頁(yè)面生命周期:
*OnInit:如果視圖狀態(tài)(ViewState)是禁用的,控件每次PreRender將被綁定。
*OnPreLoad:設(shè)置一個(gè)內(nèi)部標(biāo)記表征在初始化(init)過(guò)程結(jié)束。
*OnPreRender:設(shè)置一個(gè)內(nèi)部標(biāo)記表征在開(kāi)始PreRender過(guò)程,調(diào)用DataBind方法。

這個(gè)類有一個(gè)公共方法:
public override void DataBind();

這個(gè)方法調(diào)用受保護(hù)的方法PerformSelect,從關(guān)聯(lián)數(shù)據(jù)源檢索廣告數(shù)據(jù).

DataBoundControl
DataBoundControl繼承自BaseDataBound,作為所有以列表或表格形式顯示數(shù)據(jù)的數(shù)據(jù)綁定控件的基類使用。它添加了一個(gè)公共屬性:
public virtual string DataMember { get; set; }

它是當(dāng)數(shù)據(jù)源包含多個(gè)不同的數(shù)據(jù)項(xiàng)列表時(shí),獲取或設(shè)置數(shù)據(jù)綁定控件綁定到的數(shù)據(jù)列表的名稱。

這個(gè)類完成的主要工作是隔離派生類獲取來(lái)自數(shù)據(jù)源的數(shù)據(jù)(記住,控件可以使用DataSouce或者DataSouceID屬性來(lái)綁定,它是支持這兩種數(shù)據(jù)源的方式)。數(shù)據(jù)將出現(xiàn)在從IEnumerable派生來(lái)的類,重寫(xiě)下面的保護(hù)方法:

protected internal virtual void PerformDataBinding(IEnumerable data);

幸運(yùn)的,很難的工作已經(jīng)由ConnectToDataSourceView完成了,它得到一個(gè)數(shù)據(jù)源視圖。最直接的方法是用DataSourceID綁定控件,但是作為數(shù)據(jù)源控件為了暴露數(shù)據(jù)源它必須對(duì)類封裝(只讀的數(shù)據(jù)源從IDataSouce實(shí)現(xiàn),返回一個(gè)只支持select方法的視圖(只讀數(shù)據(jù)源視圖))。

這個(gè)類參與的頁(yè)面生命周期:
*OnPreLoad:調(diào)用基類OnPreLoad,若數(shù)據(jù)綁定控件還未綁定,如果是第一次頁(yè)面請(qǐng)求且啟動(dòng)視圖狀態(tài),去設(shè)置一個(gè)標(biāo)識(shí)在OnPreRender過(guò)程試著去綁定數(shù)據(jù)。
*OnLoad:設(shè)法從數(shù)據(jù)源中得到視圖(如果它還沒(méi)有),如果某種原因在OnPreRender過(guò)程沒(méi)有試著去綁定數(shù)據(jù)且數(shù)據(jù)沒(méi)有被綁定,去設(shè)置一個(gè)標(biāo)識(shí)在OnPreRender過(guò)程試著去綁定數(shù)據(jù)。

你看到了,當(dāng)在PreLoad過(guò)程之前如果設(shè)置了DataSouceID,為了自動(dòng)綁定數(shù)據(jù),這個(gè)類補(bǔ)充了基類留下的未完成的。

如果數(shù)據(jù)綁定控件用DataSouceID去綁定,當(dāng)數(shù)據(jù)源改變的時(shí)候,DataSourceView就會(huì)重新綁定,控件可以捕獲到DataSouceViewChanged事件。

這個(gè)類實(shí)現(xiàn)的保護(hù)方法在BaseDataBoundControl屬性中調(diào)用。ValidateDataSouce和PerformSelect已重寫(xiě)。第一個(gè)檢查為 DataSource 屬性設(shè)置的對(duì)象類型,確保其是 IDataSource、IListSource 或 IEnumerable 接口的實(shí)例,如果不是會(huì)觸發(fā)一個(gè)異常。第二個(gè)(PerformSelect)在DatBind方法中被調(diào)用,做下面的事情:
*如果我們用DataSouce來(lái)綁定,觸發(fā)DataBinding事件
*從數(shù)據(jù)源中得到數(shù)據(jù)源視圖(DataSourceView)
*標(biāo)記控件已經(jīng)綁定
*建立select相關(guān)參數(shù),調(diào)用DataSourceView的select方法,當(dāng)Select方法完成后通過(guò)回調(diào)(提供一個(gè)執(zhí)行任何自定義數(shù)據(jù)工作的 DataSourceViewSelectCallback 委托)來(lái)被調(diào)用。

 

作者:未知 | 文章來(lái)源:博客園 | 更新時(shí)間:2007-11-9 11:44:12

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    搜集整理的asp.net的驗(yàn)證方式大全session
    asp,net軟件結(jié)構(gòu)設(shè)計(jì)和相關(guān)的安全性問(wèn)題
    如何解決Menu菜單被frame遮擋以及iframe自適應(yīng)的問(wèn)題
    Orcale與Asp.net的端口沖突解決方法
    c#中的interface abstract與virtual學(xué)習(xí)
    如何利用SQL Server進(jìn)行會(huì)話狀態(tài)session的保持
    ASP.NET 2.0之Memebership擴(kuò)展應(yīng)用解決方案
    數(shù)據(jù)庫(kù)設(shè)計(jì)-數(shù)據(jù)庫(kù)的三級(jí)模式
    ASP.NET中如何使用unsafe選項(xiàng)
    三個(gè)視圖搞定SqlServer數(shù)據(jù)庫(kù)字典
    軟件技術(shù)
    · 開(kāi)發(fā)語(yǔ)言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫(kù)開(kāi)發(fā)
    最新文章  
    ·.net技術(shù) asp.net MVC3 Vi
    ·.net將視頻文件格式轉(zhuǎn)換成
    ·NET Framework 2.0 Servic
    ·如何動(dòng)態(tài)修改winform的app
    ·asp,net軟件結(jié)構(gòu)設(shè)計(jì)和相關(guān)
    ·學(xué)習(xí)怎樣使用ASP.NET中的虛
    ·,net基礎(chǔ)類的學(xué)習(xí):system
    ·.net學(xué)習(xí):c#事件的深入分
    ·Facade Pattern學(xué)習(xí)總結(jié)
    ·C#如何設(shè)置或者獲取目錄的
    ·如何使用XSL來(lái)定義ASP.NET
    ·理解WCF Data Contract契約
    ·如何能在.net2.0開(kāi)發(fā)的控件
    ·模式怎樣使用,講解模式的
    ·如何解決Menu菜單被frame遮
    關(guān)于我們 | 軟件開(kāi)發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開(kāi)發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開(kāi)發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    公主岭市| 民和| 台北市| 曲水县| 拉萨市| 北碚区| 涿鹿县| 分宜县| 富宁县| 台北市| 龙里县| 乌鲁木齐市| 仙游县| 浦县| 平罗县| 措勤县| 西藏| 迁西县| 原平市| 赞皇县| 定兴县| 扬州市| 镇赉县| 大厂| 太湖县| 汾阳市| 夹江县| 凯里市| 祁门县| 醴陵市| 中山市| 满洲里市| 万州区| 台东县| 张家港市| 巩义市| 易门县| 灵寿县| 中宁县| 眉山市| 成武县|