c#来自数据库的无效Cast checkstate值

时间:2016-04-15 13:55:51

标签: c# casting

我有一个返回设置的功能:

public DataTable check_settings()
{
    Data_access.Access_Layer Layer = new Data_access.Access_Layer();
    Layer.Open();
    DataTable table = new DataTable();
    table = Layer.SelectData("check_settings", null);
    Layer.Close();
    return table;
}

此表返回一行: 结果选中或取消选中

我想要的是取这个结果并作为设置:

DataTable _table = new DataTable();
_table = Option.check_settings();
options.Capital.CheckState = (CheckState)_table.Rows[0][0];
options.MailConfirm.CheckState = (CheckState)_table.Rows[0][1];
options.Notifications.CheckState = (CheckState)_table.Rows[0][2];

然后我收到错误Invalid Cast

2 个答案:

答案 0 :(得分:0)

在不知道表格中有哪些数据的情况下,无法真正了解正确的解决方案,但您可能需要类似

的内容
options.Capital.CheckState = _table.Rows[0][0] ? CheckState.Checked : CheckState.Unchecked;

根据表格中的实际数据,比较只需要有意义。

答案 1 :(得分:0)

它作为布尔值工作

我将数据类型IN Sql从VarChar更改为BIT 在我的代码中:

我将 CheckState 更改为已检查

    options.Capital.Checked = (Boolean)_table.Rows[0][0];
    options.MailConfirm.Checked = (Boolean)_table.Rows[0][1];
    options.Notifications.Checked = (Boolean)_table.Rows[0][2];

它完美无缺!