在我的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/