我是新来的,请原谅我,如果这是我的问题的错误部分。我的问题是我无法使用数据集的内容填充datgrid。搜索了最近几天试图解决这个问题,我已经放弃了,并认为我会在这里尝试。 我正在使用Vs 2010 VB.Net,它是一个WPF应用程序 正如您从代码中可以看出的那样,我对此非常陌生,并且欢迎任何改进建议。我可以看到数据集通过可视化工具填充好,我有一个数据网格'dgBOM',我想显示结果。我的搜索中一个流行的解决方案是添加'.DataSource',但是当我输入'。'时在dgBOM之后,数据源选项不存在。
非常感谢任何帮助。
谢谢。
代码:
Public Sub Connect()
Dim cn As OleDbConnection
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
Dim ds As DataSet
Dim da As OleDbDataAdapter
Dim dt As DataTable
Dim drow As DataRow
Dim PartColumn As DataColumn
Dim CostColumn As DataColumn
dt = New DataTable("BOM")
ds = New DataSet("BOM")
PartColumn = New DataColumn("PartNo")
CostColumn = New DataColumn("Cost")
da = Nothing
cn = Nothing
dr = Nothing
Try
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\Ls-wtgl834\share\Adrian\PriceLists\WAP-PriceLists.mdb;User ID=Admin")
cn.Open()
cmd = New OleDbCommand("select * from Inventory", cn)
dr = cmd.ExecuteReader
da = New OleDbDataAdapter(cmd)
dt.Columns.Add(PartColumn)
dt.Columns.Add(CostColumn)
While dr.Read()
If dr(0) = FBladeExtNo Then
FrontBladeCost = dr(1)
drow = dt.NewRow()
drow("PartNo") = FBladeExtNo
drow("Cost") = FrontBladeCost
dt.Rows.Add(drow)
ds.Tables.Add(dt)
Exit While
End If
End While
dgBOM.ItemsSource = ds
Catch
End Try
dr.Close()
cn.Close()
End Sub
答案 0 :(得分:0)
我放弃了DataReader以及所有这些。在几年前编写程序之后,我必须提供变更跟踪和并发和关系跟踪的所有逻辑以及我所有的东西,因为它是如此耗费时间。
现在我使用O / RM框架;那是对象/关系映射。现在的两个巨头是Entity Framework(我个人喜爱的框架)和NHibernate(最初是为Java编写的,但是移植到.NET)。这些框架允许您将数据库表映射到.NET类。您自己编写的或由工具生成的(在实体框架案例中。
Visual Studio 2010中的EF允许您进行模型优先和数据库优先开发。 Model-First允许您创建一个关于您希望类如何相互关联的图表(例如,具有地址,电话号码和事件集合的Customer类),然后生成用于存储该数据的数据库。数据库优先是相反的。您创建数据库,EF尝试创建反映数据库结构的模型。它负责连接字符串创建,实体更改跟踪和并发,并且它在很好的对象中呈现数据,在我看来,这些数据生成得相当快。就个人而言,我发现EFs数据检索的速度比我自己手工执行的数据检索和对象填充更快。
WPF具有数据绑定功能,更倾向于这些数据对象(此后我将其称为实体)而不是DataReader和DataAdapter。如果你想直接潜入,这里有一点Microsoft video开始使用EF。另外一定要查看WindowsClient.net,因为他们也有一些好东西。
稍后,一旦你掌握了EntityFramework,请查看MVVM设计模式。