나는 기본 폼은 기본적으로 SELECT 제표를 기준으로 두 개의 콤보 상자를 채 웁니다 콤보 상자와 System.Data.DataRowView
private void populateComboBoxes()
{
SqlCeDataAdapter breakfastAdapter = new SqlCeDataAdapter("SELECT DISTINCT recipeName FROM Recipe WHERE Category = 'breakfast' ", databaseConnection);
SqlCeDataAdapter lunchAdapter = new SqlCeDataAdapter("SELECT DISTINCT recipeName FROM Recipe WHERE Category = 'lunch' ", databaseConnection);
breakfastAdapter.Fill(breakfastDS, "Recipe");
lunchAdapter.Fill(lunchDS, "Recipe");
cmbBox1.DisplayMember = "recipeName";
cmbBox1.ValueMember = "recipeName";
cmbBox1.DataSource = breakfastDS.Tables["Recipe"];
cmbBox2.DataSource = lunchDS.Tables["Recipe"];
cmbBox2.DisplayMember = "recipeName";
cmbBox2.ValueMember = "recipeName";
}
을 열 때 호출되는 방법이있다. 이 방법은
cmbBox1.DataSource = breakfastDS.Tables["Recipe"]
안타 일단은 실행을 중지하고이 방법으로 이동 :
private void cmbBox1_SelectedIndexChanged(object sender, EventArgs e)
{
rtbPicture.Visible = false;
string qry = "";
qry = "SELECT DISTINCT ingredientName FROM Recipe WHERE recipeName = " + cmbBox1.SelectedItem.ToString();
SqlCeCommand com = new SqlCeCommand(qry, databaseConnection);
com.CommandText = qry;
rtbRecipe.Text = com.ExecuteScalar().ToString();
}
이 방법은 SELECT 문을 실행하고 richtextbox
에 해당 정보를 넣어하도록되어 있지만, 어떤 이유로 cmbBox1
가 설정되어 있지 않습니다. 내 이해에서 첫 번째 combobox
이미 이전 메서드에서 표시 및 값 멤버를 설정했습니다. 그러나 cmbBox1.SelectedItem.ToString()
에 도달하면 combobox
에 실제 문자열 대신 System.Data.DataRowView
을 반환합니다. 왜 문자열 대신에 System.Data.DataRowView
이 나에게 줄 수 있는지 잘 모르겠습니다.
고마워요! 'cmbBox1.DataSource = breakfastDS.Tables [ "Recipe"]'가 콤보 박스 변경을 트리거하지 않게하려면 어떻게합니까? 실제로 두 번째 방법은 콤보 박스에서 실제로 선택하는 경우에만 입력하고 싶습니다. – Lohkii
@Lohkii, 고마워. 당신의 질의에 대해서'SelectedChangeCommitted' 이벤트를'SelectedIndexChanged' 대신에 사용하려고하면, 사용자가'ComboBox'에서 값을 선택했을 때만 활성화된다는 것을 알 수 있습니다. –
Btw @ Lohkii, 내 대답에 만족하고 문제를 해결 한 경우 (대답 한대로) 질문에 답을 표시해 주시겠습니까? 고맙습니다! –