Сначала вам нужно добавить в базу данных запись для элемента выбора текст
....
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 следует заменить ключом для столбца с комбинированным списком