Я отображаю данные из базы данных в ComboBox в C#.
Итак, у меня есть таблица базы данных с идентификатором и его именем.
Теперь я пытаюсь отобразить имя в ComboBox и использовать идентификатор в качестве значения. Я знаю, что есть еще несколько вопросов по этому поводу, но, к сожалению, это не решило для меня.
Код, который я использовал сейчас, выглядит следующим образом:
lblId.Visible = false;
txtId.Visible = false;
cbType.Items.Clear();
con.Open();
cmd = "SELECT Type_id, Type FROM type";
SqlDataAdapter da = new SqlDataAdapter(cmd, con);
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
cbType.Items.Add(dr["Type_id"].ToString());
}
con.Close();
Здесь я прошу только id, но я нашел что-то вроде этого:
cbType.DataSource = dt;
cbType.DisplayMember = "Type";
cbType.ValueMember = "Type_id";
Это отображает имя.
Но теперь мне нужно вставить его в базу данных. Для этого я использую следующий код:
string klant = txtKlant.Text;
string kenteken = txtKenteken.Text;
string type = cbType.SelectedItem.ToString();
DateTime startdatum = dtpStartdatum.Value;
DateTime einddatum = dtpEinddatum.Value;
int result = 0;
con.Open();
cmd = "INSERT INTO reserveringen (Klant, Kenteken, Type_id, Startdatum, Einddatum) values(@Klant, @Kenteken, @Type_id, @Startdatum, @Einddatum)";
command = new SqlCommand(cmd, con);
command.Parameters.Add(new SqlParameter("@Klant", klant));
command.Parameters.Add(new SqlParameter("@Kenteken", kenteken));
command.Parameters.Add(new SqlParameter("@Type_id", type));
command.Parameters.Add(new SqlParameter("@Startdatum", startdatum));
command.Parameters.Add(new SqlParameter("@Einddatum", einddatum));
result = command.ExecuteNonQuery();
if (result > 0)
{
MessageBox.Show("De reservering is toegevoegd.");
txtKlant.Text = "";
txtKenteken.Text = "";
cbType.Items.Clear();
dtpStartdatum.Value = DateTime.Now;
dtpEinddatum.Value = DateTime.Now;
con.Close();
bekijkReserveringen();
}
else
{
MessageBox.Show("Er is iets misgegaan, de reservering is niet toegevoegd.");
con.Close();
}
Но когда я пытаюсь добавить его в базу данных, я получаю следующую ошибку: result = command.ExecuteNonQuery (); : Ошибка преобразования при преобразовании значения nvarchar 'System.Data.DataRowView' в тип данных int.
Когда я использую тип, я говорю об имени идентификатора, потому что он так называется в базе данных.
Если я вставлю его с первым блоком кода, он работает нормально, но для пользователя мне нужно показать имя.
Так кто-нибудь знает, в чем может быть проблема?
Заранее спасибо!