首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回想一下DataAdapter从DataTable还是DataSet

回想一下DataAdapter从DataTable还是DataSet
EN

Stack Overflow用户
提问于 2014-01-22 02:18:20
回答 1查看 75关注 0票数 0

我有一个多数据视图(DGV)的解决方案,现在有多个绑定源(BSs)和OleDbDataAdapters (官方发展援助)。

这是因为我在选项卡控件中有多个DGV,我希望在每个DGV中从数据库中显示不同的表,以及能够从DGV返回CRUD。

使用一个BS和官方发展援助,当我输入每个选项卡时,通过切换BS.DataMember,我能够在正确的DGV中显示所有正确的表。这是因为我每个标签上只有一个DGV。

我遇到问题的地方是回到数据库里。我发现,我发现的大多数例子都涉及到对每个表使用BS和官方发展援助。这似乎不雅致,所以如果有一种方法将DGV的DataSource绑定到特定的BS.Datamember,我很想知道它。

在默认了多个BS和官方发展援助之后,我可以从一个Sub中提取DGV、表名和BS,以更新任何DGV上的任何脏行。我还没搞明白的是,是否有一种方法可以得到最初用来填充表格的官方发展援助。在守则中:

代码语言:javascript
复制
Private Sub UniversalDGV_Handler_LeaveRow(sender As Object, e As DataGridViewCellEventArgs) _
         Handles DGV1.RowLeave, DGV2.RowLeave, '...' DGVn.RowLeave 

    Dim DGV As DataGridView = CType(sender, DataGridView)
    Dim bsPass As BindingSource = DGV.DataSource
    Dim CurrentDBTableName As String = bsPass.DataMember
    Dim da as OleDbDataAdapter = 'something I haven't figured out yet
    UniversalDGV_RowLeave(sender, CurrentDBTableName, e, bsPass, da)

End Sub

在现实中,我拥有的DGV的最大数量是7,所以我刚刚列出了一个匹配的列表,并以这种方式提取了官方发展援助。但这又一次显得很粗俗。

是否有一种方法可以从它所填充的表、在其上使用的DataAdapter DataSet 、BS或DGV中检索使用的

从BS或DGV的信息似乎有点牵强,因为他们没有直接互动的官方发展援助,从我的理解。我还考虑可能在使用适配器时将信息存储在dataset中,这至少是一个更优雅的列表/表。

EN

回答 1

Stack Overflow用户

发布于 2014-01-22 02:52:55

通过仔细阅读DataTable类的性质,我找到了答案。

通过使用DataTable.ExtendedProperties(),您可以存储填充表时使用的DataAdapter。代码示例:

代码语言:javascript
复制
  Dim ds as DataSet
  Dim BS1 as New BindingSource
  Dim da1, da2, da3 as New OleDbDataAdapter
  Private Sub DoSomething(da as OleDbDataAdapter)
        ds.Tables.Add(New DataTable(DBTableName))
        ds.Tables(DBTableName).ExtendedProperties("DataAdapter", da)

  End Sub
  Private Sub DoesSomethingElse() handles DGV1.Rowleave, DGV2.RowLeave, '...' DGVn.RowLeave
    Dim DGV As DataGridView = CType(sender, DataGridView)
    Dim bsPass As BindingSource = DGV.DataSource
    Dim CurrentDBTableName As String = bsPass.DataMember
    Dim RecalledDA as OleDbDataAdapter = ds.Tables(CurrentDBTableName).ExtendedProperties("DataAdapter")
        'Do something with it.  In my case I have a seperate sub I run it all into'
    UniversalDGV_RowLeave(sender, CurrentDBTableName, e, da)
  End Sub

由于我没有受过正规的训练,也许其他人都知道这一点,但我希望我能节省一些时间来解决这个问题。

有了这个,您可以使用一个BS作为您所有的DGV,假设您一次只显示一个。我认为,如果您显示了需要BS的多个DGV,那么每个DGV仍然需要一个BS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21272950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档