как читать с datareader из datatable - PullRequest
       32

как читать с datareader из datatable

0 голосов
/ 16 февраля 2012

У меня есть функция, которая возвращает DataTable

DataTable dt = GetAllObject(ogj_id);

Теперь я хочу заполнить один MultiCheckCombo, ниже ссылка, где я получил этот 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?

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Найти другой элемент управления.Этот жестко запрограммирован на использование 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 голос
/ 16 февраля 2012

Нельзя преобразовать устройство чтения данных в таблицу данных. Вам придется перебирать содержимое таблицы и создавать каждый элемент вручную. Я не знаком с этим конкретным элементом управления, но если он следует обычным соглашениям, он должен выглядеть примерно так:

foreach(DataRow row in dt.Rows)
{
    MultiCheckCombo1.Items.Add(new ListItem(dt["text"], dt["id"]));
}
...