PDA

View Full Version : چرا این کد کومبو ارور میده



csharpprogramer88
جمعه 28 تیر 1392, 11:08 صبح
سلام دوستان عزیز

میخوام از جدول Table_subkala اطلاعات را بخونم و اطلاعات فیلد vahed را در کومبو نمایش بدم
بعد که توی کومبو هر ایتمی انتخاب شد فیلد کلید اصلی که توی جدول من id تعریفش کردم را بر گردونه

توی فرم لود نوشتم



da = new SqlDataAdapter("select distinct (vahed) from Table_subkala", con);
da.Fill(ds, "Table_subkala");
bs.DataSource = ds.Tables["Table_subkala"];
comboBox1.DataSource = bs;
comboBox1.DisplayMember = "vahed";
comboBox1.ValueMember = "id";



ولی از comboBox1.ValueMember = "id"; ارور میگیره

خودم حدس میزنم کوئریم ایراد داره چون به فیلد آیدی در این کوئری دسترسی ندارم

دوستان لطفا کمک کنید

مهرداد صفا
جمعه 28 تیر 1392, 11:38 صبح
با سلام.
حدث شما کاملا درسته.
شما فیلد id را در query انتخاب نکردید و Combo.DataSource فیلدی به نام id ندارد.

csharpprogramer88
جمعه 28 تیر 1392, 12:04 عصر
private void Form1_Load(object sender, EventArgs e)
{
//con.Open();
//SqlDataAdapter da = new SqlDataAdapter("",con);
//DataTable dt = new DataTable();
//da.Fill(dt);
//comboBox1.DataSource = dt;
//comboBox1.DisplayMember = "vahed";
//comboBox1.ValueMember = "id";


da = new SqlDataAdapter("select distinct(vahed),id from Table_subkala", con);
da.Fill(ds, "Table_subkala");
bs.DataSource = ds.Tables["Table_subkala"];
comboBox1.DataSource = bs;
comboBox1.DisplayMember = "vahed";
comboBox1.ValueMember = "id";

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label2.Text = comboBox1.SelectedIndex.ToString();
}


کوئری را به این صورت تغییر دادم (ستون ID را اضافه کردم ) توی رویداد comboBox1_SelectedIndexChanged هم میتونم آیدی را بر گردونم

مهرداد صفا
جمعه 28 تیر 1392, 14:59 عصر
private void Form1_Load(object sender, EventArgs e)
{
//con.Open();
//SqlDataAdapter da = new SqlDataAdapter("",con);
//DataTable dt = new DataTable();
//da.Fill(dt);
//comboBox1.DataSource = dt;
//comboBox1.DisplayMember = "vahed";
//comboBox1.ValueMember = "id";


da = new SqlDataAdapter("select distinct(vahed),id from Table_subkala", con);
da.Fill(ds, "Table_subkala");
bs.DataSource = ds.Tables["Table_subkala"];
comboBox1.DataSource = bs;
comboBox1.DisplayMember = "vahed";
comboBox1.ValueMember = "id";

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label2.Text = comboBox1.SelectedIndex.ToString();
}


کوئری را به این صورت تغییر دادم (ستون ID را اضافه کردم ) توی رویداد comboBox1_SelectedIndexChanged هم میتونم آیدی را بر گردونم

سلام.
کوئری درست است ولی برای یزی که شما دنبالش هستید باید به این صورت عمل کرد:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label2.Text = comboBox1.SelectedValue.ToString();
}


چیزی که شما با SelectedIndex می گرفتید مقدار id نبود بلکه ستون انتخاب شده در combo بود.

csharpprogramer88
جمعه 28 تیر 1392, 15:33 عصر
سلام.
کوئری درست است ولی برای یزی که شما دنبالش هستید باید به این صورت عمل کرد:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label2.Text = comboBox1.SelectedValue.ToString();
}


چیزی که شما با SelectedIndex می گرفتید مقدار id نبود بلکه ستون انتخاب شده در combo بود.

مثل شما نوشتم خروجیش شد :System.Data.DataRowView" دلیلش چیه؟

مهرداد صفا
جمعه 28 تیر 1392, 18:09 عصر
جدول را به عنوان DataSource رار دهید:

Combobox1.DataSource=ds.Tables["Table_subkala"];

csharpprogramer88
جمعه 28 تیر 1392, 19:15 عصر
private void Form1_Load(object sender, EventArgs e)
{
da = new SqlDataAdapter("select distinct(vahed),id from Table_subkala", con);
da.Fill(ds, "Table_subkala");
comboBox1.DataSource = ds.Tables["Table_subkala"];
comboBox1.DisplayMember = "vahed";
comboBox1.ValueMember = "id";

}




private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label2.Text = comboBox1.SelectedValue.ToString();


// temp_id=int.Parse(comboBox1.SelectedValue.ToString ());
}



طبق چیزهایی که گفتین آخرین کد اینه که درست هم جواب داده