Я заполняю комбинированный список из таблицы данных следующим кодом:
public void PopulateCategoryCbo()
{
string connString = string.Format(<connectionString>);
NpgsqlConnection conn = new NpgsqlConnection(connString);
conn.Open();
string query = "SELECT id, category FROM categories ORDER BY category";
NpgsqlCommand cmd = new NpgsqlCommand(query, conn);
NpgsqlDataReader reader;
reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
//DataRow row = dt.NewRow();
//row["id"] = 0;
//row["category"] = "All Categories";
//dt.Rows.InsertAt(row, 0);
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("category", typeof(string));
dt.Load(reader);
cboSelectCategory.ValueMember = "id";
cboSelectCategory.DisplayMember = "category";
cboSelectCategory.DataSource = dt;
conn.Close();
}
Четыре закомментированные строки - моя попытка добавить в начало таблицы «Все категории» строку с индексом 0. Я сделал этот код для этого SO вопроса и ответа .
Однако, когда я запускаю решение, оно разрывается в строке row["id"] = 0;
с сообщением, идентификатор «Столбец» "не принадлежит таблице. '
Я попытался использовать 0 и 1, подумав, что они будут ссылаться на значение индекса столбцов, но я получил сообщение« Столбец 0 не принадлежит таблице. »
Я не понимаю, почему это не работает. Я вижу много похожих решений, когда решаю эту проблему в Google.