翻譯|使用教程|編輯:龔雪|2024-11-12 10:38:12.673|閱讀 130 次
概述:本文主要介紹如何使用DevExpress WinForms的Data Grid組件綁定到實體框架數據源,歡迎下載最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
在本教程中,您將學習如何將DevExpress WinForms的網格控件綁定到實體框架數據源、如何使用數據注釋屬性來更改網格顯示和管理數據的方式,以及如何將單元格值更改發送回數據源。
P.S:DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!
獲取DevExpress WinForms v24.1正式版下載
DevExpress技術交流群11:749942875 歡迎一起進群討論
從一個項目開始,它有一個Windows Form和一個空的GridControl,該解決方案還包括一個默認名為Model1的實體框架模型,您可以雙擊它來查看圖表上的可視化表示。在本教程中,使用修改版本的AdventureWorks數據庫,它只包含一個表,其中只有幾個字段。
將實體框架模型綁定到網格控件的最簡單方法是使用數據源配置向導,調用DevExpress WinForms網格控件的智能標記并單擊數據源向導。
選擇Entity Framework技術并選擇現有的數據連接或創建一個新的數據連接,在本教程中使用到樣例Microsoft AdventureWorksDW2008R2數據庫的現有連接,單擊Next繼續。
在下一頁,您將被要求選擇所需的綁定模式。選擇Binding using Binding Source組件選項,然后單擊Next。
最后,選擇要在網格控件中顯示的表格。
網格控件現在綁定到EF數據,并且已經生成了所有必需的代碼,您可以在.cs文件中看到自動生成的代碼。現在運行應用程序來查看結果。
下面是一些關于grid如何顯示其綁定數據的觀察。
所有這些默認操作都可以使用DevExpress WinForms GridControl設置進行更改,另一種方法是更改數據字段屬性或數據注釋屬性。當您有多個控件綁定到同一數據源時,這可能會派上用場。這樣您就不必設置相同的規則,看看這是怎么回事。
打開包含表格數據模型的DimProducts.cs文件,在這里您可以看到所有可用的數據字段,它們被聲明為DimProduct類的屬性。
C#
public partial class DimProduct { public int ProductKey { get; set; } public string EnglishProductName { get; set; } public Nullable<decimal> DealerPrice { get; set; } public string EnglishDescription { get; set; } public Nullable<System.DateTime> StartDate { get; set; } public Nullable<System.DateTime> EndDate { get; set; } }
VB.NET
Partial Public Class DimProduct Public Property ProductKey() As Integer Public Property EnglishProductName() As String Public Property DealerPrice() As Decimal? Public Property EnglishDescription() As String Public Property StartDate() As Date? Public Property EndDate() As Date? End Class
向這些屬性添加數據屬性,看看這會如何改變網格操作。
注意:應用程序應該引用System.ComponentModel.DataAnnotations庫來完成此操作。
C#
[Required] public string EnglishProductName { get; set; }
VB.NET
<Required> Public Property EnglishProductName() As String
運行應用程序來確保不再允許空值。
對于DealerPrice字段,添加DataType屬性,以指示應該將這些整數值視為貨幣數據。此外,應用Range屬性來設置允許的最小值和最大值。
C#
[DataType(DataType.Currency), Range(200, 5000)] public Nullable<decimal> DealerPrice { get; set; }
VB.NET
<DataType(DataType.Currency), Range(200, 5000)> Public Property DealerPrice() As Decimal?
C#
[DataType(DataType.MultilineText), Display(Name = "Description", Description = "Detailed product description")] public string EnglishDescription { get; set; }
VB.NET
<DataType(DataType.MultilineText), Display(Name := "Description", Description := "Detailed product description")> Public Property EnglishDescription() As String
運行應用程序來查看用于列標頭及其工具提示的更新標題,另外注意單元格現在使用MemoEdit,因為您將數據類型指定為多行文本。
C#
[DataType(DataType.Text)] public Nullable<System.DateTime> StartDate { get; set; } [DisplayFormat(DataFormatString = "MMMM/yyyy")] public Nullable<System.DateTime> EndDate { get; set; }
VB.NET
<DataType(DataType.Text)> Public Property StartDate() As Date? <DisplayFormat(DataFormatString := "MMMM/yyyy")> Public Property EndDate() As Date?
啟動應用程序,看到StartDate列中沒有顯示任何特殊的編輯器。EndDate列保留了編輯器,但格式發生了變化。
要確保網格控件中的單元格值更改被發送回數據源,您需要添加幾行代碼。當網格引發事件時保存更改,您需要訪問數據源上下文,因此必須更改變量的作用域,使其對Form類中的所有方法都可用。在處理程序中,需要做的就是調用SaveChanges方法。
C#
DXApplication.AdventureWorksDW2008R2Entities dbContext; private void gridView1_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e) { dbContext.SaveChanges(); }
VB.NET
Private dbContext As DXApplication.AdventureWorksDW2008R2Entities Private Sub gridView1_RowUpdated(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.RowObjectEventArgs) dbContext.SaveChanges() End Sub
現在運行應用程序并更改Dealer Price列中的值,將焦點移動到另一行,來確保引發事件。然后關閉應用程序并再次運行它,您將看到該值已保存。
更多產品資訊及授權,歡迎“”!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網