这失败了:
dtaAutomaticFlag.DataBindings.Add("Checked", BndSource, "AutomaticFlag");
很可能是因为AutomaticFlag被定义为:
public SqlByte AutomaticFlag { get; set; }
SQL Server是tinyint。原因是我不需要0和0作为值。
我需要检查值是否为1,未选中所有其他值。
我认为有一件事是在我的类中创建一个额外的属性AutomaticFlagBoolean并检查AutomaticFlag并绑定到新属性。
这是我尝试的但我总是假的:
private SqlByte _automaticFlag;
public SqlByte AutomaticFlag
{
get { return _automaticFlag; }
set
{
if (_automaticFlagBoolean)
{
_automaticFlag = 1;
}
else
{
_automaticFlag = 0;
}
}
}
private bool _automaticFlagBoolean;
public bool AutomaticFlagBoolean
{
get
{
if (_automaticFlag == 1)
{
return _automaticFlagBoolean = true;
}
else
{
return _automaticFlagBoolean = false;
}
}
set { _automaticFlagBoolean = value; }
}
这是我的约束力:
dtaAutomaticFlag.DataBindings.Add("Checked", BndSource, "AutomaticFlagBoolean");
答案 0 :(得分:1)
复选框控件需要一个布尔值来绑定。
尝试使用局部变量来保存值:
private SqlByte _automaticFlag;
private bool _automaticFlagBoolean;
public SqlByte AutomaticFlag
{
get { return _automaticFlag; }
set
{
_automaticFlag = value;
_automaticFlagBoolean = (_automaticFlag != 0);
}
}
public bool AutomaticFlagBoolean
{
get
{
return _AutomaticFlagBookean;
}
set { _automaticFlagBoolean = value;
if (_automaticFlagBoolean) {
_automaticFlag = 1;
} else {
_automaticFlag = 0;
}
}
}
然后如此绑定:
dtaAutomaticFlag.DataBindings.Add("Checked", BndSource, "AutomaticFlagBoolean");
您的课程也应该实施INotifyPropertyChanged,但这有点超出了您的问题范围。