我有一个返回DataTable的函数
DataTable dt = GetAllObject(ogj_id);
现在我想填一个MultiCheckCombo,下面是我得到这个MultiCheckCombo的链接
如何从上面的链接填充此MultiCheckCombo的示例仅适用于dataReader
OdbcConnection con = "get YOUR connection string";
con.Open();
OdbcCommand cmd = new OdbcCommand();
cmd.Connection = con;
cmd.CommandText = "select text,id from ...........";
OdbcDataReader dr = cmd.ExecuteReader();
MultiCheckCombo1.ClearAll();
dr.Read();
MultiCheckCombo1.AddItems(dr, "text", "id");
查询 - 现在我的问题听起来像这样:如何在DataTable
中转换dataReader
来填充此MultiCheckCombo
?
答案 0 :(得分:2)
找一个不同的控件。那个硬编码使用OdbcDataReader
。您不使用DataReader
来读取DataTable
中的数据 - 您遍历DataRows
。
作为一种解决方法,您可以重载AddItems以接受DataTable:
public void AddItems(DataTable dt, string textField, string valueField)
{
ClearAll();
int i = 0;
foreach (DataRow dr in dt.Rows)
{
chkList.Items.Add(dr[textField].ToString());
chkList.Items[i].Value = dr[valueField].ToString();
i++;
}
}
答案 1 :(得分:1)
您无法将数据读取器转换为数据表。您必须循环遍历表的内容并手动构建每个项目。我不熟悉这个特定的控件,但如果它遵循常规约定,它应该看起来像这样:
foreach(DataRow row in dt.Rows)
{
MultiCheckCombo1.Items.Add(new ListItem(dt["text"], dt["id"]));
}