亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ADO.NET 數據集中瀏覽多個相關表 6

2019-11-18 19:11:40
字體:
來源:轉載
供稿:網友
表達式列
  除了包含靜態數據外,還可以基于表達式的結果為 DataColumn 分配值。表達式是一
個分配給 DataColumn.ExPRession 屬性的字符串。
  當表達式與相關數據一同使用時,數據列可以包含:
  相關數據列的計算所得值。
  相關數據列的合計信息。
  相關數據的邏輯比較結果。
  為說明處理相關數據時的值表達式列,我們將針對每種使用情況介紹一個示例,并添
加到 DataRelationExample 應用程序中。
  添加包含計算值的表達式列
  計算的列包含數學運算結果。可以從現有的列中取值進行計算。訂單明細表中將添加
一個名為 Total 的新列,它將包含由表達式 UnitPrice * Quantity 返回的值(訂單的
總計美元值)。
  添加表達式列
  在 Solution Explorer(解決方案資源管理器)中,右鍵單擊 Form1 并從快捷菜單中
選擇 View Code(查看代碼)。
  將以下代碼添加到 Form1_Load 事件處理程序中已有代碼之上:
  ' Visual Basic
  ' 在訂單明細表中創建名為 Total 的表達式列。
  Dim dcTotal as DataColumn = new DataColumn("Total")
  dcTotal.DataType = System.Type.GetType("System.Decimal")
  dcTotal.Expression = "UnitPrice * Quantity"
  DsNorthwind1.Order_Details.Columns.Add(dcTotal)
  // C#
  // 在訂單明細表中創建名為 Total 的表達式列。
  DataColumn dcTotal = new DataColumn("Total");
  dcTotal.DataType = System.Type.GetType("System.Decimal");
  dcTotal.Expression = "UnitPrice * Quantity";
  dsNorthwind1.Order_Details.Columns.Add(dcTotal);
  運行應用程序。
  在列表框中選擇一個訂單,
  檢查 RTF 文本框中的訂單明細,并注意每個記錄都有一個新的 Total 列,顯示 Uni
tPrice 和 Quantity 字段的乘積。
  關閉窗體。
  添加包含合計信息的表達式列
  Expression 屬性支持幾個合計功能(Sum、Avg、Count 等)。有關詳細信息,請參閱
DataColumn.Expression 屬性。
  為演示如何生成合計信息,需要在訂單表中添加一個名為 OrderTotal 的新列。此列
將使用 Sum 功能,根據在列表框 (lbOrders) 中選定的訂單返回所有子訂單明細記錄的
總計美元值。然后,該值將顯示在 RTF 文本框中每個訂單明細的上方。
  創建 OrderTotal 列
  在 Solution Explorer(解決方案資源管理器)中,右鍵單擊 Form1 并從快捷菜單中
選擇 View Code(查看代碼)。
  在 Form1_Load 事件處理程序中,將以下代碼添加到在訂單明細表中創建 Total 列的
代碼的下方:
  ' Visual Basic
  ' 在訂單表中創建名為 OrderTotal 的表達式列。
  Dim dcOrderTotal as DataColumn = new DataColumn("OrderTotal")
  dcOrderTotal.DataType = System.Type.GetType("System.Decimal")
  dcOrderTotal.Expression = "Sum(Child.Total)"
  DsNorthwind1.Orders.Columns.Add(dcOrderTotal)
  // C#
  // 在訂單表中創建名為 OrderTotal 的表達式列。
  DataColumn dcTotal2 = new DataColumn("OrderTotal");
  dcTotal2.DataType = System.Type.GetType("System.Decimal");
  dcTotal2.Expression = "Sum(Child.Total)";
  dsNorthwind1.Orders.Columns.Add(dcTotal2);
  將合計信息顯示在所有訂單明細的上方
  在 lbOrders_SelectedIndexChanged 事件處理程序中,將以下代碼添加到 Dim deta
ils As String = "" 或 string details = "" 行之下:
  ' Visual Basic
  details = "訂單總計: " & String.Format("{0:c}", _
  DsNorthwind1.Orders.FindByOrderID(CType(lbOrders.SelectedItem, _
  Integer))("OrderTotal")) & ControlChars.CrLf
  // C#
  details = "訂單總計: " +
  String.Format("{0:c}",dsNorthwind1.Orders.FindByOrderID
  ((int)lbOrders.SelectedItem)["OrderTotal"]) + "/n";
  運行應用程序。
  在列表框中選擇一個訂單,
  請注意,選定訂單的所有訂單明細的總計金額將顯示在 RTF 文本框中的第一行。
  在列表框中選擇另一個訂單,將更新顯示以反映新選擇的訂單。
  關閉窗體。
  添加包含邏輯求值的表達式列
  Expression 屬性可以基于其他列中的計算值來填充某個數據列。例如,訂單表中的
OrderSize 列可以包含值“Big”(如果訂單總額大于 1000)或者“Small”(如果訂單
總額小于 1000)。
  為演示這類表達式,需要在 DataRelationExample 應用程序中添加代碼以執行以下操
作:
  在訂單表中添加名為 OrderSize 的數據列。
  根據相關訂單明細的值來填充 OrderSize 列。
  在 RTF 文本框的頂部同時顯示 OrderSize 列的值和 OrderTotal 的值。
  添加創建 OrderSize 列的代碼
  在 Solution Explorer(解決方案資源管理器)中,右鍵單擊 Form1 并從快捷菜單中
選擇 View Code(查看代碼)。
  在 Form1_Load 事件處理程序中,將以下代碼添加到在訂單表中創建 OrderTotal 列
的代碼的下方:
  ' Visual Basic
  ' 在訂單表中創建名為 OrderSize 的表達式列。
  Dim dcOrderSize as DataColumn = new DataColumn("OrderSize")
  dcOrderSize.DataType = System.Type.GetType("System.String")
  dcOrderSize.Expression = "IIF(Sum(Child.Total)<1000,'Small','Big')"
  DsNorthwind1.Orders.Columns.Add(dcOrderSize)
  // C#
  // 在訂單表中創建名為 OrderSize 的表達式列。
  DataColumn dcOrderSize = new DataColumn("OrderSize");
  dcOrderSize.DataType = System.Type.GetType("System.String");
  dcOrderSize.Expression = "IIF(Sum(Child.Total)<1000,'Small','Big')";
  dsNorthwind1.Orders.Columns.Add(dcOrderSize);
  顯示 OrderSize 的值
  在 lbOrders_SelectedIndexChanged 事件處理程序中,將以下代碼添加到第一個 Fo
r Each 行的上方:
  ' Visual Basic
  details &= " (" & CType(DsNorthwind1.Orders.FindByOrderID _
  (CType(lbOrders.SelectedItem, Integer))("OrderSize"), String) & ")" _
  & ControlChars.CrLf
  // C#
  details += " (" + dsNorthwind1.Orders.FindByOrderID
  ((int)lbOrders.SelectedItem)["OrderSize"] + ")/n";
  運行應用程序。
  在列表框中選擇一個訂單。
  檢查 RTF 文本框中的第一行。選定訂單的 OrderSize 將顯示在 OrderTotal 的右側
。
  在列表框中選擇另一個訂單,將更新顯示以反映新選擇的訂單。
  從 Debug(調試)菜單中,選擇 Stop Debugging(停止調試)。
  有關相關表的其他信息
  這里有必要提及一些其他信息以豐富本文的內容。
  填充相關數據表的順序非常重要
  相關數據表的填充順序對數據的輸出有很大影響,因此必須在設計應用程序時予以考
慮。例如,請注意最后一個填充的客戶表的情況。當填充客戶表時,組合框將填充客戶
名稱值。填充組合框時,會引發 SelectedIndexChanged 事件。這將執行事件處理程序
中的代碼。由于尚未填充訂單表,GetChildRows 方法將返回零 (0) 個記錄,窗體的標
題將顯示錯誤信息。試一試:更改代碼以首先填充客戶表,并運行應用程序。窗體的標
題顯示 ALFKI 的零 (0) 個訂單,這是不正確的。
  返回相關記錄的特定版本
  通過將所需的 DataRowVersion 作為第二個(可選的)參數傳遞給 GetChildRows 或
GetParentRow 方法,可以返回數據行的特定版本。以該應用程序為例,如果只想查看
特定客戶的原始訂單,可以將組合框的 SelectedIndexChanged 事件中的代碼更改為類
似如下的代碼。由于此應用程序中的數據并未更改,以下代碼不會產生明顯的效果,這
里只是作為一個說明。
  ' Visual Basic
  ' 只用選定客戶的原始子行
  ' 填充數組。
  Dim draOrders As DataRow() = DsNorthwind1.Customers.FindByCustomerID _
  (cbCustomers.SelectedValue.ToString()).GetChildRows _
  ("CustomersOrders", DataRowVersion.Original)
  // C#
  // 只用選定客戶的原始子行
  // 填充數組。
  DataRow draOrders = dsNorthwind1.Customers.FindByCustomerID
  (cbCustomers.SelectedValue.ToString()).GetChildRows
  ("CustomerOrders", DataRowVersion.Original);
  總結
  要訪問特定數據行的相關記錄,可以調用該行的 GetChildRows 或 GetParentRow 方
法,以傳遞連接該數據行及其相關記錄的數據關系。然后,便可以通過檢查由該方法調
用返回的數據行(或數據行數組)來訪問相關的記錄。
  通過為 DataColumn.Expression 屬性分配一個有效的表達式字符串并將數據列添加到
相應的 DataTable.Columns 集合中,可以對相關記錄中的值進行計算,合計和邏輯求值。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品99国产精| 美女性感视频久久久| 69久久夜色精品国产7777| 欧美激情亚洲国产| 精品视频一区在线视频| 久久久成人的性感天堂| 在线播放日韩欧美| 欧美午夜电影在线| 亚洲一区制服诱惑| 亚洲午夜av久久乱码| 九九久久久久久久久激情| 亚洲欧美日韩图片| 国内精品一区二区三区| 一本大道香蕉久在线播放29| 亚洲va欧美va国产综合剧情| 色琪琪综合男人的天堂aⅴ视频| 欧美多人爱爱视频网站| 国产精品久久久久久久av大片| 国产精品国产三级国产aⅴ浪潮| 精品久久中文字幕久久av| 亚洲自拍在线观看| 蜜臀久久99精品久久久无需会员| 国产一区二区三区免费视频| 日韩精品欧美国产精品忘忧草| 国产精品欧美风情| 中文字幕在线观看亚洲| 九九热这里只有精品6| 亚洲综合精品一区二区| 欧美精品少妇videofree| 国产精品久久久久9999| 欧美又大粗又爽又黄大片视频| 欧美一区二粉嫩精品国产一线天| 尤物tv国产一区| 亚洲精品av在线播放| 久久伊人色综合| 国产成人一区二区三区小说| 午夜精品久久久久久久99热| 日日狠狠久久偷偷四色综合免费| 国产精品扒开腿爽爽爽视频| 久久色在线播放| 国产精品色午夜在线观看| 国产精品主播视频| 欧美xxxx综合视频| 97超视频免费观看| 国产精品极品美女粉嫩高清在线| 亚洲国产精品高清久久久| 精品国产成人在线| 国产精品福利久久久| 在线视频亚洲欧美| 精品亚洲va在线va天堂资源站| 欧美自拍视频在线| 亚洲国产精品va在看黑人| 欧美日韩综合视频网址| 精品国产乱码久久久久酒店| 久久久国产精品免费| 国产精品伦子伦免费视频| 国外日韩电影在线观看| 久久精品成人动漫| 91精品国产高清| 91在线精品播放| 亚洲一区二区久久久| 另类图片亚洲另类| 日韩高清av在线| 久久久之久亚州精品露出| 欧美日韩免费看| 91精品啪在线观看麻豆免费| 国产精品日韩精品| 伊人久久五月天| 日韩免费在线电影| 国产成人精品久久二区二区91| 狠狠做深爱婷婷久久综合一区| 日本中文字幕不卡免费| 亚洲片在线资源| 国产精品久久77777| 日韩中文字幕在线视频播放| 午夜精品一区二区三区av| 国产日韩欧美在线看| www.亚洲一区| 国产精品成久久久久三级| 免费不卡欧美自拍视频| 欧美丰满少妇xxxx| 日韩在线视频导航| 国产精品www色诱视频| 国内精品伊人久久| 欧美性xxxx| 日韩亚洲欧美中文在线| 欧美乱大交xxxxx| 亚洲黄色www| 欧美一级在线播放| 成人午夜两性视频| 久久五月情影视| 中文字幕日韩精品有码视频| 亚洲va国产va天堂va久久| 亚洲精品国精品久久99热一| 精品免费在线视频| 两个人的视频www国产精品| 精品久久久久久久久久国产| 91精品国产高清| 中文字幕亚洲欧美日韩高清| 成人免费在线视频网址| 日韩在线视频二区| 亚洲xxxx做受欧美| 国产日韩欧美在线播放| 欧美国产高跟鞋裸体秀xxxhd| 欧美激情啊啊啊| 国产精品一二三在线| 国产精品精品国产| 亚洲欧洲免费视频| 精品国产老师黑色丝袜高跟鞋| 欧美亚洲成人精品| 欧美一级视频一区二区| 日本精品久久中文字幕佐佐木| 国产精品极品尤物在线观看| 久久久久久久久久久网站| 97超碰蝌蚪网人人做人人爽| 亚洲深夜福利网站| 亚洲3p在线观看| 国产成人一区二区三区小说| 91精品国产综合久久久久久蜜臀| 欧美激情综合色| 久久久久久这里只有精品| 国产99久久精品一区二区永久免费| 日本19禁啪啪免费观看www| 中文字幕av一区二区三区谷原希美| 日韩在线视频线视频免费网站| 精品免费在线视频| 欧美电影免费观看电视剧大全| 热re91久久精品国99热蜜臀| 亚洲午夜未删减在线观看| 国产日本欧美一区二区三区在线| 91久久国产精品91久久性色| 亚洲精品美女在线观看| 欧美激情精品久久久久久黑人| 国产成人91久久精品| 欧美在线视频在线播放完整版免费观看| 日韩中文字幕在线观看| 久久99视频精品| 最近2019年好看中文字幕视频| 色999日韩欧美国产| 久久伊人精品视频| 欧美成人精品一区| 国产精品视频自在线| 91精品国产乱码久久久久久久久| 日韩电影免费观看在线观看| 亚洲精品自在久久| 欧美午夜无遮挡| 国产精品日韩一区| 97视频在线免费观看| 日韩精品在线观看视频| 国产福利精品视频| 国产精品一区专区欧美日韩| 久久成人精品视频| 国产精品免费小视频| 亚洲男女性事视频| 日韩hd视频在线观看| 91色中文字幕| 亚洲精品成人久久| 欧美一级视频一区二区| 亚洲色图综合网| 亚洲欧美日韩直播| 国产日韩中文字幕| 国产自产女人91一区在线观看| 国产亚洲精品成人av久久ww| 久久影视电视剧免费网站|