在我的Winforms C#应用程序中,我具有具有Int数据类型的字段,并且将它们设置为接受SQL Server数据库中的空值(允许空值)。

在表单中,我有一些文本框绑定到那些int数据类型字段。如果我在创建新记录时不输入任何内容,则表示接受。如果我在文本框中输入数字,它也会接受它,然后删除它,它不再接受它,甚至不允许我移动到下一个字段。

如果我通过代码将其值设置为null或"",则它只是忽略甚至不更新我在其他非int文本字段中所做的更改。

我正在使用以下方法进行更新。

this.Validate();
this.itemsbindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.sBSDBDataSet);


我该如何使文本框接受空值?

我尝试了以下。

IDTextBox.Text = "";
IDTextBox.Text = null;

最佳答案

这似乎是WF数据绑定错误之一。我不能说到底是什么原因造成的,但是为了使其起作用,应该将Binding.NullValue属性设置为“”(空字符串,默认值为null)。

我找不到在设计器中执行此操作的方法,而且找到所需的所有文本框也很烦人。因此,我建议您使用以下快捷方法。创建这样的帮助方法:

public static class ControlExtensions
{
    public static void FixTextBoxBindings(this Control control)
    {
        if (control is TextBox)
        {
            foreach (Binding binding in control.DataBindings)
                if (binding.NullValue == null) binding.NullValue = "";
        }
        foreach (Control child in control.Controls)
            child.FixTextBoxBindings();
    }
}


然后只需在表单Load事件中添加以下内容:

this.FixTextBoxBindings();

关于c# - Winform中的Int字段不会使用C#更新SQL Server数据库中的空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39424231/

10-13 06:02
查看更多