. net绑定SqlByte数据类型的复选框的checked属性

本文关键字:复选框 属性 checked 数据类型 绑定 SqlByte net | 更新日期: 2023-09-27 17:53:53

操作失败:

dtaAutomaticFlag.DataBindings.Add("Checked", BndSource, "AutomaticFlag");

很可能是因为AutomaticFlag被定义为:

public SqlByte AutomaticFlag { get; set; }

SQL Server是tinyint。原因是我不仅仅需要0和0作为值。

我需要检查值是否为1,不检查所有其他值

我想的一件事是在我的类中创建一个额外的属性AutomaticFlagBoolean,并检查AutomaticFlag并绑定到新属性。

这就是我所尝试的,但我总是得到false:

    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");

. net绑定SqlByte数据类型的复选框的checked属性

复选框控件需要一个布尔值进行绑定。

尝试使用一个局部变量来保存值:

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,但这有点超出了你的问题的范围