C# 绑定组合框中的空项为NULL

C# 绑定组合框中的空项为NULL,c#,.net,winforms,data-binding,C#,.net,Winforms,Data Binding,如何在绑定的组合框中有一个空项,它使用NULL作为插入或更新的值 使用下面的代码,我可以手动添加额外的行。列inspector\u id是FK关系的主键。我必须设置inspector\u id=-1,因为C不允许int为null。但是,插入(或更新)失败,因为数据库中没有inspector\u id:-1 private void ItemInfo_Load(object sender, EventArgs e) { // TODO: This line of code loads da

如何在绑定的
组合框
中有一个空项,它使用
NULL
作为插入或更新的值

使用下面的代码,我可以手动添加额外的行。列
inspector\u id
是FK关系的主键。我必须设置
inspector\u id=-1
,因为C不允许
int
null
。但是,插入(或更新)失败,因为数据库中没有
inspector\u id:-1

private void ItemInfo_Load(object sender, EventArgs e)
{
    // TODO: This line of code loads data into the 'someDBDataSet.inspector' table. You can move, or remove it, as needed.
    this.inspectorTableAdapter.ClearBeforeFill = false;
    someDBDataSet.inspectorRow newRow = this.someDBDataSet.inspector.NewinspectorRow();
    newRow.inspector_id = -1; // Since an int in C# cannot be null
    newRow.fullName = "(none)";
    newRow.employeeCode = "";
    this.someDBDataSet.inspector.AddinspectorRow(newRow);

    this.inspectorTableAdapter.Fill(this.someDBDataSet.inspector);
    //this.inspectorTableAdapter.ClearBeforeFill = false;
    // TODO: This line of code loads data into the 'someDBDataSet.item' table. You can move, or remove it, as needed.
    this.itemTableAdapter.Fill(this.someDBDataSet.item);
}

在尝试了各种方法后,我最初决定:

private void ItemInfo_Load(object sender, EventArgs e)
{
    this.inspectorTableAdapter.Fill(this.someDBDataSet.inspector);
    this.itemTableAdapter.Fill(this.someDBDataSet.item);
}

private void noInspector_btn_Click(object sender, EventArgs e)
{
    inspector_idComboBox.SelectedItem = null;
}
我没有在组合框中添加虚拟项,而是添加了一个(链接)按钮来清除组合框

优点:

  • 组合框将被清除
  • tableAdapter
    设置
    item.inspector\u id=NULL
  • 缺点:

  • 绑定到
    inspector
    字段的其他表单控件保持不变(因为没有要使用的“空”
    inspector
    行)
  • SelectedItem
    为空时,
    inspector\u id组合框中不显示文本。我更喜欢在框中显示类似
    (无)
    的内容

  • 在尝试了各种方法后,我最初决定:

    private void ItemInfo_Load(object sender, EventArgs e)
    {
        this.inspectorTableAdapter.Fill(this.someDBDataSet.inspector);
        this.itemTableAdapter.Fill(this.someDBDataSet.item);
    }
    
    private void noInspector_btn_Click(object sender, EventArgs e)
    {
        inspector_idComboBox.SelectedItem = null;
    }
    
    我没有在组合框中添加虚拟项,而是添加了一个(链接)按钮来清除组合框

    优点:

  • 组合框将被清除
  • tableAdapter
    设置
    item.inspector\u id=NULL
  • 缺点:

  • 绑定到
    inspector
    字段的其他表单控件保持不变(因为没有要使用的“空”
    inspector
    行)
  • SelectedItem
    为空时,
    inspector\u id组合框中不显示文本。我更喜欢在框中显示类似
    (无)
    的内容

  • 在尝试了各种方法后,我最初决定:

    private void ItemInfo_Load(object sender, EventArgs e)
    {
        this.inspectorTableAdapter.Fill(this.someDBDataSet.inspector);
        this.itemTableAdapter.Fill(this.someDBDataSet.item);
    }
    
    private void noInspector_btn_Click(object sender, EventArgs e)
    {
        inspector_idComboBox.SelectedItem = null;
    }
    
    我没有在组合框中添加虚拟项,而是添加了一个(链接)按钮来清除组合框

    优点:

  • 组合框将被清除
  • tableAdapter
    设置
    item.inspector\u id=NULL
  • 缺点:

  • 绑定到
    inspector
    字段的其他表单控件保持不变(因为没有要使用的“空”
    inspector
    行)
  • SelectedItem
    为空时,
    inspector\u id组合框中不显示文本。我更喜欢在框中显示类似
    (无)
    的内容

  • 在尝试了各种方法后,我最初决定:

    private void ItemInfo_Load(object sender, EventArgs e)
    {
        this.inspectorTableAdapter.Fill(this.someDBDataSet.inspector);
        this.itemTableAdapter.Fill(this.someDBDataSet.item);
    }
    
    private void noInspector_btn_Click(object sender, EventArgs e)
    {
        inspector_idComboBox.SelectedItem = null;
    }
    
    我没有在组合框中添加虚拟项,而是添加了一个(链接)按钮来清除组合框

    优点:

  • 组合框将被清除
  • tableAdapter
    设置
    item.inspector\u id=NULL
  • 缺点:

  • 绑定到
    inspector
    字段的其他表单控件保持不变(因为没有要使用的“空”
    inspector
    行)
  • SelectedItem
    为空时,
    inspector\u id组合框中不显示文本。我更喜欢在框中显示类似
    (无)
    的内容

  • 另一种方法是在选择
    (无)
    时清除
    组合框:

    优点:

  • 正确的空值将保存到数据集并发送到数据库
  • 不需要外部清除按钮
  • 缺点:

  • 选择
    (无)
    也会清除文本。我希望
    (无)
    保持选中状态

  • 另一种方法是在选择
    (无)
    时清除
    组合框:

    优点:

  • 正确的空值将保存到数据集并发送到数据库
  • 不需要外部清除按钮
  • 缺点:

  • 选择
    (无)
    也会清除文本。我希望
    (无)
    保持选中状态

  • 另一种方法是在选择
    (无)
    时清除
    组合框:

    优点:

  • 正确的空值将保存到数据集并发送到数据库
  • 不需要外部清除按钮
  • 缺点:

  • 选择
    (无)
    也会清除文本。我希望
    (无)
    保持选中状态

  • 另一种方法是在选择
    (无)
    时清除
    组合框:

    优点:

  • 正确的空值将保存到数据集并发送到数据库
  • 不需要外部清除按钮
  • 缺点:

  • 选择
    (无)
    也会清除文本。我希望
    (无)
    保持选中状态

  • Eureka绑定到视图,而不是表

    将inspector\u idComboBox
    绑定到inspector表的新SQL Server视图

    SELECT NULL as inspector_id, '(none)' as fullName, '' as employeeCode
    UNION
    SELECT inspector_id, fullName, employeeCode
    FROM dbo.inspector
    
    优点:

  • (无)
    项位于组合框中
  • 选择项目时,
    SelectedItem
    和文本将持续显示
  • SQL视图允许
    inspector\u id
  • 应用程序代码中不需要任何变通方法。只需从视图中填充
    数据集
  • 在关系未绑定时允许更大的灵活性

  • 。。。太棒了

    真是太棒了绑定到视图,而不是表

    将inspector\u idComboBox
    绑定到inspector表的新SQL Server视图

    SELECT NULL as inspector_id, '(none)' as fullName, '' as employeeCode
    UNION
    SELECT inspector_id, fullName, employeeCode
    FROM dbo.inspector
    
    优点:

  • (无)
    项位于组合框中
  • 选择项目时,
    SelectedItem
    和文本将持续显示
  • SQL视图允许