.net 连接对象。缺少一条con.Close语句可能会导致各种错误。使用块关闭并在最后处理东西以释放资源

.net 连接对象。缺少一条con.Close语句可能会导致各种错误。使用块关闭并在最后处理东西以释放资源,.net,database,vb.net,data-binding,.net,Database,Vb.net,Data Binding,另外请注意,如果您有一个所有客户的数据表,您可以使用该数据表在按照前面的问题删除之前查看#30是否存在。现在,绑定: “从DT初始化BS bsSample=新绑定源(dtSample,Nothing) tbName.DataBindings.Add(“Text”,bsSample,“Name”) tbDescr.DataBindings.Add(“Text”,bsSample,“Descr”) chkActive.DataBindings.Add(“选中”,bsSample,“活动”) 第一行

另外请注意,如果您有一个所有客户的
数据表
,您可以使用该数据表在按照前面的问题删除之前查看#30是否存在。现在,绑定:

“从DT初始化BS
bsSample=新绑定源(dtSample,Nothing)
tbName.DataBindings.Add(“Text”,bsSample,“Name”)
tbDescr.DataBindings.Add(“Text”,bsSample,“Descr”)
chkActive.DataBindings.Add(“选中”,bsSample,“活动”)
第一行初始化
BindingSource
。最后一部分设置“映射”。例如,
tbName
的Text属性设置为显示来自
bsSample
源的“Name”DB数据。
复选框
活动的
数据(bool)显示为
选中的
属性

BindingSource有一整套可以使用的方法和属性。您的下一步按钮:

Private Sub btnNext\u Click(发送者作为对象,e作为事件参数)处理btnNext。单击
bsSample.MoveNext()
btnNext.Enabled=(bsSample.Count-1>bsSample.Position)
'要做的事情:为btnPrev添加类似代码
端接头
请注意,用户对控件所做的更改将应用于
数据表
,但不会应用于数据库。如果您不希望用户能够以这种方式进行编辑,一种简单的方法是使用
DataView

Dim dv=新数据视图(dtSample)
dv.AllowEdit=False
bsSample=新绑定源(dv,无)
您还可以基于每个字段禁用对源的更新:

tbName.DataBindings.Add(“Text”,bsSample,“Name”,False,DataSourceUpdateMode.Never)
也许最简单的是:

dgv.ReadOnly=True
dgv.DataSource=dtSample
Do将一个DataGridView放到表单上,并将
数据源设置为
数据表
,以查看它的易用性。太多的人不必要地害怕它


1这就是通过DataAdapter一次添加、删除和更新DataTable中任意数量行的全部内容。设置它们来实现这一点需要几行代码,尽管令人惊讶的是很少

当您可以简单地禁用按钮时,为什么允许他们单击“下一步”按钮并显示错误?预防几乎总是比治疗好。此外,您应该去掉所有这些代码,改用数据绑定。将
DataTable
绑定到
BindingSource
并将其绑定到控件。然后,您只需在
BindingSource
上调用
MovePrevious
MoveNext
即可进行导航。不,错误仅显示在表的最后一行,因此假设我们有10行,我希望它在到达第10行时显示一个错误,然后再次单击下一行,直到显示该错误时不再显示行。然后我想设计糟糕的软件,但我不想鼓励这样做。当你决定要写好的软件时,我会回来帮助你。不,这不是坏软件,因为它只是一个大学项目,所以不会出版。我只是被指示做一个下一个和上一个按钮,在数据中来回滚动,这就是所有的,我创建它的方式是最好的匹配。我以前从未使用过这个bindingsource,也没有听说过它,但我非常感谢您的帮助。谢谢当您可以简单地禁用按钮时,为什么允许他们单击“下一步”按钮并显示错误?预防几乎总是比治疗好。此外,您应该去掉所有这些代码,改用数据绑定。将
DataTable
绑定到
BindingSource
并将其绑定到控件。然后,您只需在
BindingSource
上调用
MovePrevious
MoveNext
即可进行导航。不,错误仅显示在表的最后一行,因此假设我们有10行,我希望它在到达第10行时显示一个错误,然后再次单击下一行,直到显示该错误时不再显示行。然后我想设计糟糕的软件,但我不想鼓励这样做。当你决定要写好的软件时,我会回来帮助你。不,这不是坏软件,因为它只是一个大学项目,所以不会出版。我只是被指示做一个下一个和上一个按钮,在数据中来回滚动,这就是所有的,我创建它的方式是最好的匹配。我以前从未使用过这个bindingsource,也没有听说过它,但我非常感谢您的帮助。谢谢我很欣赏这整件事,但遗憾的是,我想坚持我自己的代码,因为上面的代码对我来说太复杂了,哈哈。我创建了一个“返回开始”和“转到最后一行”按钮,该按钮有效,而我的“上一行”按钮有效。我真正需要的是,当您转到最后一行并想再次按“下一行”时,它将显示一个错误,表示这是最后一条记录(行)。我会使用上面的代码,但我不知道如何实现这一点,以我的背部开始和去最后一行按钮或做之前,因为我从来没有使用过绑定(第一次听到它是诚实的!),但谢谢!与手动映射绑定相比,除了设置绑定之外,它实际上更简单,只需更少的代码即可完成更多的工作
MoveNext()
MovePrevious()
,'MoveFirst()`和
MoveLast()
。还有一种查找和筛选的方法,这样你就可以在不触发查询的情况下检查#30。我不认为你可以使用它完成整个最后和第一部分,所以这很酷。我将编辑我的代码,希望它能工作。如果我需要帮助,我会在这里发布!再次感谢您对Proputoix的大力支持!:)如果您使用向导,他们会将其中一些内容的组件版本添加到表单中,并为您完成所有这些工作,但这些人永远不会了解发生了什么或它是如何工作的。还请注意要点2——如果你选择