【问题标题】:VB.NET Return Data From ListBox to TextBox using SQLDBVB.NET 使用 SQLDB 将数据从 ListBox 返回到 TextBox
【发布时间】:2018-01-15 16:44:18
【问题描述】:

我有点陷入困境。我试图在 VB.NET winforms 中创建的是一个列表框,其中包含一个名称列表,当用户双击一个名称时,它会返回从数据库中选择的名称和该名称的描述。

这就是我目前所做的,我进行了许多不同的尝试,但几乎没有成功。

private Sub lstbxOfNames_DoubleClick(sender As Object, e As EventArgs) Handles lstboxOfName.DoubleClick
  Dim nameFromListBox As String = lstbxOfNames.GetItemText(lstbxOfNames.SelectedItem)
  Dim nameToTextBox as String
  txtNameDescription.Clear()
  txtName.Clear()

  With DBSet.NameTbl
    nameToTextBox = .FirstOrDefault(Function(x) x.Name = nameFromListBox).ToString()
  End With

  txtName.Text = nameToTextBox.ToString()
End Sub

这是我至少从数据库返回名称的代码的开始。从某种意义上说,这不会让我失望,但是我没有得到可读的结果。我收到的结果是 projectName.dbset.Nametbl+Nametbltyperow。

我不应该使用 With 语句吗?

我在这里错过了一个概念吗?

仅供参考,我没有接口、抽象层、getter setter,我使用的是在设计视图中“自动”绑定到数据源时创建的绑定对象。 我是否需要创建所有接口、抽象层和 getter setter 才能使所有这些正常工作?

*****编辑****** 我正在使用一个 sql 数据库。我所指的对象是当我为列表框对象设置数据绑定时 VS 创建的数据绑定和数据源。但是,这不是我在这种情况下使用的。我的目标是使用列表框对象返回的数据。

双击事件用于允许用户进入和编辑模式。有关名称的数据应返回到文本框中,以便用户可以编辑数据并单击保存以保存更新的数据。

【问题讨论】:

  • 您的帖子令人困惑。您实际使用的数据库是什么。 AFAIK,“SQLDB”是与 Pascal 相关的数据库。我们也不知道“绑定对象”指的是什么——事物有名称。与 DoubleClick 事件相比,使用 SelectedItemChanged 事件更为常见。如果控件数据已绑定(听起来像是),那么您必须转换结果,否则您只需获得您提到的类型名称。
  • @Plutonix 我正在使用 SQLDB。我假设我可能指的绑定对象是带有 NametblBindingSource 对象的 NametblDataAdapter。我不太熟悉 VS 如何命名和创建绑定对象。我可以解释发生了什么的唯一方法是 ListBox 对象有一个被点击的视觉箭头。单击箭头后,会弹出数据库绑定向导,我将填写;数据源、显示成员、值成员。我选择使用双击事件,所以当用户想要编辑名称时,他们可以双击它并在我应该拥有的文本框中进行编辑
  • 重新编辑:仍然不知道a sql db 是什么。许多数据库都使用 SQL - SQL 是一种语言而不是 RDBMS,它们都有名称。如果 ListBox 绑定到 DataSource,则选择的项目就是您所需要的 - 不需要 linq。您可能想研究类型化数据集,因为这听起来像是您正在使用的东西的名称

标签: database vb.net winforms linq listbox


【解决方案1】:

我已经想出了如何解决这个问题。关于数据库混乱,我使用的是 MS SQL Server。我希望这就是所要求的。当有人使用 SQL DB 我认为它是 MS SQL Server 时,通常会出现这种混淆。但是我发现在 vb.net for winforms 中的 listbox 对象有一个从选定列表中检索数据的方法。

dim lstbx1 as listbox()
lstbx1.GetItemText(lstbx1.SelectedItem)

这将获取需要用于查询的数据字符串。

我所做的是使用 LINQ 来访问数据库,但是由于我使用的是文本框,所以我必须创建几种不同类型的 LINQ 查询。如果有人知道更好的方法,请告诉我。

dim linqQuery = from query in DBobject.Table
                Where query.column = lstbx1.GetItemText(lstbx1.SelectedItem)
                Select query.Name
textbox.text = linqQuery.FirstOrDefault.ToString()

我不得不在我的代码隐藏页面上多次执行此操作,但我现在正在尝试重构并整理一些内容。希望它有效。我希望这可以帮助其他可能需要这样做的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多