【问题标题】:Checkbox databinding default value null复选框数据绑定默认值 null
【发布时间】:2016-09-30 20:45:00
【问题描述】:

我正在将一个复选框数据绑定到一个绑定源,如果我不单击该复选框,它将向我的数据库返回一个空值。

这是数据绑定代码:

 checkGehuwd.DataBindings.Add("Checked", PersonenBindingSource, "gehuwd", true,
            DataSourceUpdateMode.OnPropertyChanged);

如何返回默认值 false?

问候安迪

【问题讨论】:

  • 为什么不在db设置默认值false?
  • 我试过它仍然设置为空。
  • gehund 是可空的布尔值吗?
  • 它是 sqlite 数据库中的整数值,链接到数据集,链接到绑定源,数据绑定到复选框。
  • 我不认为将非布尔值绑定到复选框是首选,但无论如何都可以。

标签: c# .net winforms checkbox data-binding


【解决方案1】:

您可以通过这种方式将数据绑定到CheckState 属性:

checkBox1.DataBindings.Add("CheckState", bs, "DataFieldName", true,
    DataSourceUpdateMode.OnPropertyChanged, CheckState.Indeterminate);

这样,当数据源中filed的值为null时,UI中会显示CheckState.Indeterminate

注意

  • 如果您希望列的默认值为0 或未选中,则将DataColumnDefaultValue 设置为0

  • 如果你想让用户也设置字段的值为null,只需将CheckBoxThreeState属性设置为true即可。

示例

dt = new DataTable();
var c1 = dt.Columns.Add("C1", typeof(int));
c1.AllowDBNull = true;

//Uncomment the next statement if you want default value be 0 = unchecked
//c1.DefaultValue = 0;

//Uncomment the next statement if you want to allow the user to set value to null
//checkBox1.ThreeState = true;

var bs = new BindingSource();
bs.DataSource = dt;
checkBox1.DataBindings.Add("CheckState", bs, "C1", true,
    DataSourceUpdateMode.OnPropertyChanged, CheckState.Indeterminate);
this.bindingNavigator1.BindingSource = bs;

【讨论】:

  • 当我不点击它时,它仍然会插入空值,即使将 CheckState.true 设置为默认值
  • 当你点击复选标记时它会插入 1 并使复选框显示复选标记。单击并取消选中时插入 0。当您单击并将复选框设置为不确定时插入 null,这会在复选框中显示一个正方形。
  • 要测试它,只需使用我在示例中提供的代码。这样的代码可以简单地测试而不需要任何数据库。
  • 确保您阅读了示例中的 Note 部分和 cmets。
  • 这篇文章似乎回答了你的问题,如果你对答案有任何疑问或者你觉得它有用,请告诉我:)
猜你喜欢
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多