青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

ADO。NET之dataview(六)

DataView 使您能夠創建 DataTable 中所存儲的數據的不同視圖,這種功能通常用于數據綁定應用程序。使用 DataView,您可以公開表中具有不同排序順序的數據,并且可以按行狀態或基于篩選器表達式來篩選數據。

DataView 提供數據的動態視圖,其內容、排序和成員關系會實時反映對基礎 DataTable 的更改。它不同于 DataTableSelect 方法,后者從表中按特定的篩選器和/或排序順序返回 DataRow 數組,雖然其內容反映對基礎表的更改,但其成員關系和排序卻則保持靜態。DataView 的動態功能使其成為數據綁定應用程序的理想選擇。

與數據庫提供的視圖類似,DataView 為您提供了可向其應用不同排序和篩選條件的單個數據集的動態視圖。但是,DataView 和數據庫視圖之間相當不同的一點在于 DataView 不能作為表來進行處理,并且不能提供聯接表的視圖。另外,還不能排除存在于源表中的列,也不能追加不存在于源表中的列(如計算列)。

可以使用 DataViewManager 來管理 DataSet 中所有表的視圖設置。DataViewManager 為您提供了一種方便的方法來管理每個表的默認視圖設置。在將一個控件綁定到 DataSet 的多個表時,綁定到 DataViewManager 是理想的選擇。

創建:

創建 DataView 的方法有兩種。可以使用 DataView 構造函數,也可以創建對 DataTableDefaultView 屬性的引用。DataView 構造函數可以為空,也可以通過單個參數的形式采用 DataTable 或者同時采用 DataTable 與篩選條件、排序條件和行狀態篩選器。
[C#]
DataView custDV = new DataView(custDS.Tables["Customers"],
                               "Country = 'USA'",
                               "ContactName",
                               DataViewRowState.CurrentRows);
DataView custDV = custDS.Tables["Customers"].DefaultView;

使用 DataView 對數據排序和篩選

DataView 提供了幾項用于對 DataTable 中的數據進行排序和篩選的功能:

  • 使用 Sort 屬性,您可以指定單個或多個列排序順序并包含 ASC(升序)和 DESC(降序)參數。
  • 可以使用 ApplyDefaultSort 屬性自動以升序創建基于表的一個或多個主鍵列的排序順序。只有當 Sort 屬性為空引用或空字符串時以及表已定義主鍵時,ApplyDefaultSort 才適用。
  • 使用 RowFilter 屬性,您可以根據行的列值來指定行的子集。有關 RowFilter 屬性的有效表達式的更多信息,請參見有關 DataColumn 類的 Expression 屬性的參考信息。

    如果要返回對數據的特定查詢的結果(而不是提供數據子集的動態視圖)以實現最佳性能,請使用 DataViewFindFindRows 方法,而不是設置 RowFilter 屬性。設置 RowFilter 屬性會使數據的索引被重新生成,從而增加應用程序的系統開銷并降低性能。最好將 RowFilter 屬性用于其中的綁定控件顯示篩選結果的數據綁定應用程序。FindFindRows 方法會利用當前的索引,而不需要重新生成索引。有關 FindFindRows 方法的更多信息,請參見搜索 DataView

  • 使用 RowStateFilter 屬性,您可以指定要查看的行版本。DataView 根據基礎行的 RowState 來隱式地管理要公開哪些行版本。例如,如果 RowStateFilter 設置為 DataViewRowState.Deleted,由于不存在 Current 行版本,DataView 將公開所有 Deleted 行的 Original 行版本。可以使用 DataRowView RowVersion 屬性來確定要公開行的哪些行版本。

[C#]
DataView prodView = new DataView(prodDS.Tables["Products"],
                                 "UnitsInStock <= ReorderLevel",
                                 "SupplierID, ProductName",
                                 DataViewRowState.CurrentRows);

--------------------------------------------------------------------------

查看 DataView 的內容

DataView 公開可枚舉的 DataRowView 對象集合。DataRowView 對象將值公開為 object 數組,這些數組按基礎表中列的名稱或序號引用來編制索引。可以使用 DataRowViewRow 屬性來訪問由 DataRowView 公開的 DataRow

當使用 DataRowView 查看值時,DataViewRowStateFilter 屬性將確定公開基礎 DataRow 的哪一個行版本。
[C#]
  DataView catView = new DataView(catDS.Tables["Categories"]);

  Console.WriteLine("Current Values:");

  WriteView(catView);

  Console.WriteLine("Original Values:");

  catView.RowStateFilter = DataViewRowState.ModifiedOriginal;

  WriteView(catView);

public static void WriteView(DataView myView)
{
  foreach (DataRowView myDRV in myView)
  {
    for (int i = 0; i < myView.Table.Columns.Count; i++)
      Console.Write(myDRV[i] + "\t");
    Console.WriteLine();
  }
}

-------------------------------------------------------------------------------------------------------------

使用 DataView 修改數據

可以使用 DataView 在基礎表中添加、刪除或修改數據行。通過設置 DataView 的三個布爾值屬性之一,可以控制使用 DataView 修改基礎表數據的能力。這些屬性為 AllowNewAllowEditAllowDelete。默認情況下,它們設置為 true

如果 AllowNewtrue,則可以使用 DataView AddNew 方法來創建新的 DataRowView。請注意,在調用 DataRowViewEndEdit 方法之前,新行實際上不會添加到基礎 DataTable 中。如果調用 DataRowViewCancelEdit 方法,則將丟棄新行。另請注意,一次只能編輯一個 DataRowView。如果在存在掛起行時調用 DataRowViewAddNewBeginEdit 方法,則會對該掛起行隱式調用 EndEdit。當調用 EndEdit 時,更改將應用于基礎 DataTable,并且隨后可以使用 DataTableDataSetDataRow 對象的 AcceptChangesRejectChanges 方法來提交或拒絕更改。如果 AllowNewfalse,則當調用 DataRowView AddNew 方法時,將引發異常。

如果 AllowEdittrue,可以通過 DataRowView 來修改 DataRow 的內容。您可以使用 DataRowView.EndEdit 確認對基礎行的更改,或使用 DataRowView.CancelEdit 拒絕更改。請注意,一次只能編輯一行。如果在存在掛起行時調用 DataRowViewAddNewBeginEdit 方法,則將對掛起行隱式調用 EndEdit。當調用 EndEdit 時,建議更改將放置在基礎 DataRowCurrent 行版本中,隨后可以使用 DataTableDataSetDataRow 對象的 AcceptChangesRejectChanges 方法來提交或拒絕這些更改。如果 AllowEditfalse,則當試圖修改 DataView 中的值時,將引發異常。

當編輯現有 DataRowView 時,仍將引發基礎 DataTable 的事件,并提供建議更改。請注意,如果對基礎 DataRow 調用 EndEditCancelEdit,那么無論是否對 DataRowView 調用 EndEditCancelEdit,都將應用或取消掛起的更改。

如果 AllowDeletetrue,則可以使用 DataViewDataRowView 對象的 Delete 方法刪除 DataView 中的行,這些行也將從基礎 DataTable 中刪除。隨后可以分別使用 AcceptChangesRejectChanges 來提交或拒絕刪除。如果 AllowDeletefalse,當調用 DataViewDataRowViewDelete 方法時,將引發異常。

以下代碼示例禁用通過 DataView 刪除行的功能,并使用 DataView 向基礎表中添加新行。

[C#]
DataTable custTable = custDS.Tables["Customers"];
DataView custView = custTable.DefaultView;
custView.Sort = "CompanyName";

custView.AllowDelete = false;

DataRowView newDRV = custView.AddNew();
newDRV["CustomerID"] = "ABCDE";
newDRV["CompanyName"] = "ABC Products";
newDRV.EndEdit();

posted on 2005-11-24 12:23 夢在天涯 閱讀(1209) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1814985
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美日韩一区在线观看| 日韩视频在线免费| 永久久久久久| 国产精品99久久久久久有的能看| 亚洲经典视频在线观看| 久久免费精品视频| 免费一级欧美片在线观看| 欧美大成色www永久网站婷| 欧美成人在线影院| 99视频在线观看一区三区| 亚洲天堂av高清| 欧美一区二区三区视频在线观看| 久久精品国产成人| 欧美福利电影网| 国产精品国码视频| 国产在线精品成人一区二区三区| 亚洲第一在线综合网站| 亚洲一级片在线观看| 久久蜜桃精品| 亚洲欧洲精品一区二区三区不卡 | 国产精品99久久久久久久vr | 永久域名在线精品| 亚洲精品综合精品自拍| 欧美专区在线| 亚洲欧洲三级| 久久久久久久久久久成人| 欧美激情国产日韩精品一区18| 国产精品jvid在线观看蜜臀| 韩国av一区二区三区| 日韩视频久久| 久久视频一区| 一本色道88久久加勒比精品| 久久不射电影网| 欧美无乱码久久久免费午夜一区| 国产午夜精品视频| 亚洲精品久久久久久久久久久久久| 亚洲自拍三区| 亚洲国产高清自拍| 新片速递亚洲合集欧美合集| 欧美日本不卡高清| 狠狠综合久久av一区二区老牛| 一区二区欧美激情| 欧美成人综合在线| 欧美一区2区三区4区公司二百| 欧美伦理91i| 亚洲国产精品传媒在线观看| 久久成人av少妇免费| 亚洲免费av电影| 欧美 日韩 国产精品免费观看| 国产午夜精品视频| 亚洲一区在线观看视频 | 猛干欧美女孩| 亚洲视频一区二区在线观看| 欧美成人免费大片| 在线精品视频免费观看 | 免费欧美日韩国产三级电影| 亚洲欧美成人在线| 国产精品草莓在线免费观看| 中日韩高清电影网| 亚洲精品免费看| 欧美精品激情blacked18| 亚洲高清视频一区二区| 麻豆九一精品爱看视频在线观看免费| 午夜日本精品| 国产手机视频一区二区| 午夜精品福利视频| 亚洲影视综合| 国产亚洲欧美一级| 久久九九热免费视频| 欧美制服丝袜| 一区国产精品| 欧美激情一区二区三区成人 | 亚洲一区二区在线看| 欧美人在线观看| 亚洲视频视频在线| 亚洲小说春色综合另类电影| 欧美亚洲第一区| 欧美在线日韩在线| 久久久久国产精品厨房| 黄色一区二区三区四区| 欧美黄色日本| 欧美日韩一区二区在线| 欧美一区2区三区4区公司二百| 午夜精品一区二区在线观看| 黄色成人在线| 亚洲欧洲视频| 国产精品无人区| 免费欧美电影| 国产精品美女久久久久久久| 久久精品国产久精国产一老狼| 久久久国产亚洲精品| 亚洲三级免费电影| 亚洲午夜精品福利| 黄色在线成人| 一区二区av在线| 国内久久视频| a4yy欧美一区二区三区| 狠狠久久亚洲欧美| 亚洲毛片网站| 国模私拍视频一区| 91久久精品国产91性色tv| 国产精品一区二区在线观看不卡| 欧美成人r级一区二区三区| 欧美日韩在线精品| 免费在线亚洲| 国产亚洲精品7777| 一区二区三区久久久| 一区二区在线观看av| 一区二区三区国产在线| 亚洲激情啪啪| 久久爱www| 欧美午夜不卡在线观看免费 | 91久久久亚洲精品| 亚洲一区日本| 亚洲每日更新| 久久久噜噜噜久久狠狠50岁| 亚洲欧美日韩国产综合在线 | 午夜性色一区二区三区免费视频 | 欧美精品一区二区三区蜜桃| 欧美在线资源| 欧美三级午夜理伦三级中文幕 | 国产精品久久久一本精品| 欧美大胆成人| 国产专区欧美精品| 一本久道久久综合婷婷鲸鱼| 亚洲激情亚洲| 免费黄网站欧美| 久久综合综合久久综合| 国产欧美激情| 亚洲一区区二区| 亚洲欧美中文另类| 国产精品九九| 亚洲在线黄色| 香蕉久久夜色精品国产| 欧美日韩一区二区三区| 亚洲黄色一区二区三区| 亚洲日本视频| 欧美美女日韩| 亚洲免费观看高清在线观看 | 亚洲一区亚洲| 性做久久久久久| 国产精品网站一区| 亚洲在线一区二区三区| 久久99在线观看| 国产在线精品成人一区二区三区 | 久久久久一区二区三区四区| 久久综合九色综合久99| 国产一区二区久久| 久久久www成人免费无遮挡大片| 久久本道综合色狠狠五月| 国产欧美综合一区二区三区| 亚洲欧美精品一区| 久久精品视频在线看| 韩国一区电影| 麻豆91精品91久久久的内涵| 亚洲国产成人av| 亚洲午夜精品久久| 国产精品视频免费观看| 欧美一区二区三区四区在线| 欧美成人免费在线视频| 99精品国产在热久久| 国产精品免费aⅴ片在线观看| 亚洲欧美日韩久久精品| 亚洲一区免费在线观看| 一区二区三区精品视频| 香港成人在线视频| 亚洲第一福利在线观看| 欧美精品日本| 亚洲图片激情小说| 久久在线免费观看视频| 91久久夜色精品国产九色| 欧美日韩福利视频| 亚洲欧美国产精品桃花| 六月婷婷一区| 亚洲欧美另类国产| 亚洲电影专区| 欧美色视频日本高清在线观看| 久久国产精品电影| 一个色综合导航| 鲁大师成人一区二区三区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 午夜一区在线| 亚洲级视频在线观看免费1级| 性久久久久久久久久久久| 在线欧美不卡| 国产精品稀缺呦系列在线| 久久免费的精品国产v∧| 在线一区二区三区四区| 欧美电影美腿模特1979在线看| 亚洲欧美日韩国产综合精品二区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美精品一区二区三| 欧美在线一二三区| 中文国产成人精品久久一| 欧美不卡激情三级在线观看| 香蕉国产精品偷在线观看不卡| 亚洲最黄网站| 亚洲精品欧洲精品| 在线日本成人| 国模私拍视频一区|