【问题标题】:How to display default values in bound form?如何以绑定形式显示默认值?
【发布时间】:2014-01-29 18:08:37
【问题描述】:

我有一个绑定到数据表的 VB.Net 表单。

让我们假设以下数据表:

    Dim DataTable As New DataTable
    DataTable.Columns.Add(New DataColumn("ID"))
    DataTable.Columns.Add(New DataColumn("NAME"))
    DataTable.Columns("ID").AllowDBNull = False
    DataTable.Columns("NAME").AllowDBNull = False

表单有两个文本框绑定到数据表:

    Me.TextBox1.DataBindings.Add("text", DataTable, "ID")
    Me.TextBox2.DataBindings.Add("text", DataTable, "NAME")

现在我想在 ID 中使用默认值向数据表添加一个新行。我有两种方法。

第一种方法

    Me.DataTable.Rows.Add()

此方法无效。它引发错误:列“ID”不允许空值。

第二种方法

    Dim NewRow As DataRow
    NewRow = DataTable.NewRow

    'Add ID default value
    NewRow.Item("ID") = 1
    .
    .
    .
    'Once the user filled the field Name
    NewRow.Item("NAME") = TextBox2.text
    DataTable.Rows.add(NewRow)

第二种方法的问题是,id 文本框中没有出现受影响的默认值,这是很正常的,因为该行尚未添加到数据表中。如果“NAME”列尚未填充,我也不能将其添加到数据表中。

这是否意味着我永远无法在表单中显示默认值?

有人知道如何在表单上显示与 AllowDBNull 属性相关的默认值吗?

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    尝试设置 DataColumn 的 DefaultValue 属性:

    DataTable.Columns("ID").DefaultValue = 0
    DataTable.Columns("NAME").DefaultValue = "Test"
    

    【讨论】:

    • 感谢您的回答。如果 Column NAME 没有默认值,应该由用户填写怎么办?
    • @ThomasCarlton 您帖子中令人困惑的部分是您将 TextBox2 属性绑定到数据表,该数据表只会绑定到第一行,因为您没有使用具有货币管理器的东西,像 BindingSource 等。您始终可以使 DefaultValue 等于 String.Empty,然后在需要有效输入的 TextBox2 控件上使用验证。
    猜你喜欢
    • 1970-01-01
    • 2021-08-12
    • 2013-03-26
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多