Как установить первое значение по умолчанию в ComboBox внутри приложения Windows Forms datagridview с использованием C # - PullRequest
1 голос
/ 04 мая 2019

Мое приложение Windows Form, имеющее Datagridview с выпадающим списком. Мне нужно установить первое значение, например («Выбрать элемент»)

Мой результат

My result is.

Ожидаемый результат

Expected Result



DataGridViewComboBoxColumn cmd_item =(DataGridViewComboBoxColumn)(invoice_datagrid.Columns["cmb_gridItem"]);
            DataTable dt = new DataTable();
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT DISTINCT  item_name,sales_rate.item_id FROM sales_rate JOIN items ON sales_rate.item_id=items.item_id", con);
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            da.Fill(dt);
            cmd_item.DisplayMember = "item_name";
            cmd_item.ValueMember = "item_id";
            cmd_item.DataSource = dt;
            con.Close();



1 Ответ

1 голос
/ 04 мая 2019

Сначала вам нужно добавить в базу данных запись для элемента выбора текст

....
da.SelectCommand = cmd;
da.Fill(dt);

// Add a fake record to the table with id = -1 to recognize it 
DataRow r = dt.NewRow();
r.ItemArray = new object[] {"select item", -1};

// Insert the new row in the first position of your table
dt.Rows.InsertAt(r, 0);
cmd_item.DisplayMember = "item_name";
cmd_item.ValueMember = "item_id";
cmd_item.DataSource = dt;
con.Close();

Теперь значение, отображаемое по умолчанию в комбинации для ваших строк, зависит от значения для этого столбца в источнике данных вашей сетки.
Так, например, если строка в вашей сетке имеет значение -1 для столбца, в котором у вас есть ComboBox, тогда будет показана запись «выбрать элемент».

EDIT
Кажется, вам нужно значение по умолчанию для вашего столбца ComboBox при добавлении новой записи в сетку. В этом случае Microsoft предлагает использовать событие DefaultValuesNeeded . В обработчике событий вы можете установить значение ячейки в требуемое значение, чтобы отобразить текст select item .

private void invoice_datagrid_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
    // Set the default value for the combobox column in new rows.
    e.Row.Cells("combobox_column_key").Value = -1
}

Здесь combobox_column_key следует заменить ключом для столбца с комбинированным списком

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...