PDA

View Full Version : مشکل در ذخیره کردن دیتای ComboBox در sql



deznava
شنبه 21 مهر 1397, 19:57 عصر
با سلام
وقت همگی دوستان بخیر
من یه پروژه ای رو دارم کار میکنم که دارای دو جدول در sql هست.
یک فیلد به نام groupid در یک جدول کلید اصلی و در جدول دیگه کلید خارجی از نوع int هست.
حالا من وقتی میخوام از طریق کمبوباکس combobox.selectedvalue رو در کلید خارجی ذخیره کنم به من ارور میده:

Severity Code Description Project File Line Suppression State
Error CS0555 User-defined operator cannot take an object of the enclosing type and convert to an object of the enclosing type AzmoonGir D:\Azmoon\Prog\AzmoonGir\AzmoonGir\DataClasses.des igner.cs 455 Active


کد من برای درج در دیتابیس از طریق تکنولوژی linq به صورت زیره:
var db = new DataClassesDataContext();

TblQuestion tq = new TblQuestion()
{
GroupID =Convert.ToInt32( cmbGoup.SelectedValue),
QuestionText = txtQuestion.Text,
Case1 = txtCase1.Text,
Case2 = txtCase2.Text,
Case3 = txtCase3.Text,
Case4 = txtCase4.Text,
Answer=Convert.ToInt32( cmbAnswer.Text),
};

به نظر شما اشکال کار از کجاست؟

alexmcse
شنبه 21 مهر 1397, 22:03 عصر
لطف کنید امتحان کنید
بجای
cmbGoup.SelectedValue
از
cmbGoup.Text
استفاده کنید

deznava
شنبه 21 مهر 1397, 22:38 عصر
سلام بر شما
خاصیت text به درد من نمیخوره. من میخوام مقدار selectedvalue رو بگیره.
آخه نوع groupid در اس کیو ال int هست

Mahmoud.Afrad
شنبه 21 مهر 1397, 23:48 عصر
cmbGoup را چطور پر میکنید؟

تبدیل ها را قبل از خط 3 انجام بدید تا متوجه بشید دقیقا خطا از کجاست.

deznava
یک شنبه 22 مهر 1397, 00:15 صبح
سلام
دو تا تیبل هست. یکیش تیبل سوال و یکی تیبل گروه ها.فیلد groupid در تیبل سوال کلید اصلی و در تیبل گروه کلید فرعیه.
تیبل گروه یه دونه groupid و یه groupname داره. بنابراین تیبل groupid از این طریق پر میشه. مشکل اینکه که وقتی توی تیبل سوالات میخوام خاصیت selectedvalue کمبوباکس رو بگیرم بهم خطای بالا رو میده. یعنی مثلا وقتی من توی فرم سوالات گروه رو گروه فیزیک انتخاب کردم میخوام در حقیقت groupid فیزیک رو برام برگردونه و من بتونم اونو توی دیتابیسم ذخیره کنم...

Mahmoud.Afrad
یک شنبه 22 مهر 1397, 00:27 صبح
اینها رو که گفتید. کد پر کردن کمبوباکسها رو بزارید. تبدیلات رو هم در خطوط مجزا انجام بدید.


اگر میتونید پروژه را قرار بدید یا پیام خصوصی کنید.

alexmcse
یک شنبه 22 مهر 1397, 13:29 عصر
امتحان کردم جواب داد
int i = Convert.ToInt32(comboBox1.Text);
MessageBox.Show(i.ToString());

mehdiyahyavi
سه شنبه 24 مهر 1397, 03:05 صبح
خطا به این دلیل هست که شما ValueMember رو برای ComboBox تعریف نکردین.
و احتمالا آیتم های ComboBox رو به صورت دستی وارد کردید.
راه مناسب این هست که از یه Table یا لیست برای اضافه کردن داده ها استفاده کنید و DisplayValue و ValueMember رو تعریف کنید.
نمونه کد:

DataTable courseTable = new DataTable();

courseTable.Columns.Add("id", typeof(int));
courseTable.Columns.Add("name", typeof(string));


courseTable.Rows.Add(1, "فیزیک");
courseTable.Rows.Add(2, "ریاضی");
courseTable.Rows.Add(3, "شیمی");
courseTable.Rows.Add(4, "محاسبات");
comboBox1.DataSource = courseTable;
comboBox1.DisplayMember = "name";
comboBox1.ValueMember = "id";