国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

ASP.NET2.0中使用數(shù)據(jù)源控件之基礎(chǔ)知識(shí)

2024-07-10 13:03:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
    數(shù)據(jù)源控件是 microsoft visual studio 2005 中引入的一種新型服務(wù)器控件,它們是數(shù)據(jù)綁定體系結(jié)構(gòu)的一個(gè)關(guān)鍵部分,能夠通過(guò)數(shù)據(jù)綁定控件來(lái)提供聲明性編程模型和自動(dòng)數(shù)據(jù)綁定行為。本文及此系列中的后續(xù)幾篇文章將介紹實(shí)現(xiàn)數(shù)據(jù)源控件的核心內(nèi)容。

  引言

  簡(jiǎn)而言之,數(shù)據(jù)源控件概括了一個(gè)數(shù)據(jù)存儲(chǔ)和可以針對(duì)所包含的數(shù)據(jù)執(zhí)行的一些操作。databound 控件通過(guò)其 datasourceid 屬性與一個(gè)數(shù)據(jù)源控件相關(guān)聯(lián)。大多數(shù)傳統(tǒng)的數(shù)據(jù)存儲(chǔ)要么是表格格式,要么是分層的,數(shù)據(jù)源控件也相應(yīng)地分為兩類(lèi)。在此要介紹的是表格格式的數(shù)據(jù)源控件。

  數(shù)據(jù)源控件自身并不能發(fā)揮多大作用;所有邏輯都封裝在 datasourceview 派生的類(lèi)中。至少有一個(gè) datasourceview 必須實(shí)現(xiàn)檢索(即 select)一組行的功能。它可以提供修改數(shù)據(jù)(即 insert、update 和 delete)的功能(可選)。數(shù)據(jù)綁定控件可通過(guò)各種 can??? 屬性來(lái)檢查啟用功能集。數(shù)據(jù)源控件本身只是一個(gè)或多個(gè)唯一命名視圖的容器。依據(jù)慣例,默認(rèn)視圖可以按其名稱進(jìn)行訪問(wèn),也可以為空。不同視圖之間是否存在關(guān)系或者存在怎樣的關(guān)系可以根據(jù)每個(gè)數(shù)據(jù)源控件的實(shí)現(xiàn)情況來(lái)進(jìn)行適當(dāng)?shù)亩x。例如,某個(gè)數(shù)據(jù)源控件可能會(huì)通過(guò)不同的視圖對(duì)同一個(gè)數(shù)據(jù)提供不同的經(jīng)篩選的視圖,或者可能會(huì)在輔助視圖中提供一組子行。可使用數(shù)據(jù)綁定控件的 datamember 屬性來(lái)選擇某個(gè)特殊的視圖(如果該數(shù)據(jù)源控件提供了多個(gè)視圖)。請(qǐng)注意,whidbey 中的所有內(nèi)置數(shù)據(jù)源控件目前都不提供多個(gè)視圖。

  最后再介紹一點(diǎn)內(nèi)容。數(shù)據(jù)源控件(及其視圖)會(huì)實(shí)現(xiàn)兩組 api。第一組 api 是就四種常用的數(shù)據(jù)操作而定義的一個(gè)抽象界面,以常規(guī)方式從任一數(shù)據(jù)綁定控件中使用。第二組是可選的,它使用其表示的域或數(shù)據(jù)存儲(chǔ)方面的術(shù)語(yǔ)來(lái)定義,通常被強(qiáng)類(lèi)型化,且面向應(yīng)用程序開(kāi)發(fā)人員。

  示例

  在這些文章中,將實(shí)現(xiàn)一個(gè) weatherdatasource,它將針對(duì)由 weather.com(英文)提供的 rest(英文)xml api 來(lái)工作,以便根據(jù)郵政編碼來(lái)檢索天氣信息。通常會(huì)首先實(shí)現(xiàn)派生的數(shù)據(jù)源控件。

public class weatherdatasource : datasourcecontrol {
 public static readonly string
 currentconditionsviewname = "currentconditions";

 private weatherdatasourceview _currentconditionsview;

 private weatherdatasourceview currentconditionsview {
  get {
   if (_currentconditionsview == null) {
    _currentconditionsview = new weatherdatasourceview(this, currentconditionsviewname);
   }
   return _currentconditionsview;
  }
 }

 public string zipcode {
  get {
   string s = (string)viewstate["zipcode"];
   return (s != null) ? s : string.empty;
  }
  set {
   if (string.compare(value, zipcode,
    stringcomparison.ordinal) != 0) {
     viewstate["zipcode"] = value;
     currentconditionsview.raisechangedevent();
   }
  }
 }

 protected override datasourceview getview(string viewname) {
  if (string.isnullorempty(viewname) ||
     (string.compare(viewname, currentconditionsviewname,
     stringcomparison.ordinalignorecase) == 0)) {
      return currentconditionsview;
  }
  throw new argumentoutofrangeexception("viewname");
 }

 protected override icollection getviewnames() {
  return new string[] { currentconditionsviewname };
 }

 public weather getweather() {
  return currentconditionview.getweather();
 }
}


  如您所見(jiàn),基本的理念是實(shí)現(xiàn) getview 以返回一個(gè)命名視圖實(shí)例,以及實(shí)現(xiàn) getviewnames 以返回可用視圖集。

  在此選擇從 datasourcecontrol 中派生。有一點(diǎn)是不易察覺(jué)的,事實(shí)上數(shù)據(jù)綁定控件要查找 idatasource 界面,而 datasource 控件通過(guò)實(shí)現(xiàn) getview 和 getviewnames 來(lái)實(shí)現(xiàn)該界面。之所以需要界面是為了使數(shù)據(jù)源控件能夠既是表格格式又是分層的(如果可能的話),在這種情況下從主要模型中派生并將另一個(gè)模型作為界面來(lái)實(shí)現(xiàn))。其次,還允許在各種方案中轉(zhuǎn)換其他控件,以使數(shù)據(jù)源的容量加倍。 另外還要注意公共 zipcode 屬性和返回強(qiáng)類(lèi)型化 weather 對(duì)象的 getweather 方法。此 api 適合于頁(yè)面開(kāi)發(fā)人員。頁(yè)面開(kāi)發(fā)人員無(wú)需考慮 datasourcecontrol 和 datasourceview。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 合阳县| 通河县| 西畴县| 大厂| 陆川县| 玉屏| 灵寿县| 丘北县| 桃园市| 大渡口区| 商城县| 甘孜| 广丰县| 双辽市| 孙吴县| 东乡县| 通化县| 商洛市| 桦川县| 连州市| 阿克陶县| 海晏县| 乌拉特中旗| 洛川县| 贡嘎县| 仁化县| 宁陕县| 辛集市| 太谷县| 禄劝| 建德市| 屏东市| 丹巴县| 嘉义市| 英德市| 会宁县| 巫山县| 中西区| 嘉善县| 蕉岭县| 铅山县|