PDA

View Full Version : سوال: اشکال در پر کردن ComboBox بوسیله ی Linq



restive
سه شنبه 21 دی 1389, 23:44 عصر
سلام.
می خوام بدونم به وسیله ی کدای زیر می شه ComboBox رو پر کرد؟
یعنی ایرادی ندارن؟
this.comboBoxWord.DataSource = Query;
this.comboBoxWord.DisplayMember = "Loghat";
this.comboBoxWord.ValueMember = "ID";
this.comboBoxWord.SelectedValue = "ID";

چون از خاصیت SelectedValue نمی تونم استفاده کنم!Error های ناجور می گیره برنامم.
مثلا وقتی که یه قطعه برنامه برای Search دارم :


private void SearchAam()
{
DataClassesSpecificationDataContext db = new DataClassesSpecificationDataContext();
dataGridViewAam.Rows.Clear();
var AamList = (from temp in db.ViwRefrenceTitles
where (temp.RefrenceType == "اعم") && (temp.IDLogaht.ToString() == comboBoxWord.SelectedValue.ToString())
select temp);
foreach (ViwRefrenceTitle viw in AamList)
{
dataGridViewAam.Rows.Add(viw.Refrence, viw.RefrenceTitle, viw.Pazirofte);
}
}


خواهش می کنم کمک کنید:ناراحت:

مهدی فرزاد
سه شنبه 21 دی 1389, 23:56 عصر
سلام
این کد this.comboBoxWord.SelectedValue = "ID";
رو نیاز نیست بنویسی و پاک کن
و در کدت اینو اصلاح کن

temp.IDLogaht==(int)comboBoxWord.SelectedValue)

hamidreza20
چهارشنبه 22 دی 1389, 08:26 صبح
سلام
این کد this.comboBoxWord.SelectedValue = "ID";
رو نیاز نیست بنویسی و پاک کن
و در کدت اینو اصلاح کن

temp.IDLogaht==(int)comboBoxWord.SelectedValue)


سلام برای چی نیاز نیست؟؟؟؟ داره از دیتابیس کوئری می گیره... و چند تا فیلد رو واکشی می کنه . به جای value پیش فرض کمبو که از صفر شروع می شه داره ID اون جدول رو جایگزینش می کنه...
دوست عزیز برنامه خودتون رو با استفاده از Break Point (بازدن کلید F9) در آن خط اجرا کنید و سپس با زدن کلید F10 دنبال کنید ببینید توی متغیرها چی می شینه ؟؟؟ خطا از کجاست؟؟؟
التماس دعا

restive
چهارشنبه 22 دی 1389, 11:59 صبح
سلام
این کد this.comboBoxWord.SelectedValue = "ID";
رو نیاز نیست بنویسی و پاک کن
و در کدت اینو اصلاح کن

temp.IDLogaht==(int)comboBoxWord.SelectedValue)



این کارم انجام دادم نشد.مرسی

restive
چهارشنبه 22 دی 1389, 12:11 عصر
شاید من درس منظورمو نمی گم:افسرده:
واسه همین برناممو گذاشتم اینجا.
الان مشکل من اینه که توی فرم Update وقتی دکمه ی نمایش زده می شه هیچ اطلاعاتی توی DataGridView ها نشون داده نمی شه که روشون ویرایش انجام بشه.
در واقع Searchها درست انجام نمی شن.
ممنون.کمک:افسرده:

من Break Point گذاشتم نتیجش این بود که :
AamList : null
Temp : The name 'temp' does not exist in the current context

hamidreza20
چهارشنبه 22 دی 1389, 12:54 عصر
سلام دوست عزیز
من کد شما رو دانلود کردم و دیدم ولی چون دیتا بیس آن فایل های ldf و mdf بانک نبود نشد اجرا کنم .
کد شما به ظاهر درسته

من دوتا پرانتز به شرط شما اضافه کردم :

var AamList = (from temp in db.ViwRefrenceTitles
where ((temp.RefrenceType == "اعم") && (temp.IDLogaht.ToString() == comboBoxWord.SelectedValue.ToString()))
select temp);

تست کنید دوباره...
اگه دیتابیس بود می شد trace کرد...
امیدوارم مشکلتون حل بشه. فقط چرا دوتا کلاس واسط اضافه کردی؟؟؟؟؟؟

مهدی فرزاد
چهارشنبه 22 دی 1389, 13:33 عصر
سلام برای چی نیاز نیست؟؟؟؟
چون در کد
this.comboBoxWord.ValueMember
این مقدار تنظیم میشه نه در کد
this.comboBoxWord.SelectedValue

restive
چهارشنبه 22 دی 1389, 14:26 عصر
سلام
من دو تا پرانتزو اضافه کردم ، AamList پر شد ولی هنوز temp رو نمی شناسه و در ضمن Error زیر:
64932
DataBase رو هم گذاشتم.مرسی

مهدی فرزاد
چهارشنبه 22 دی 1389, 14:40 عصر
برنامه شما رو که اجرا میکنم کلا سیستم هنگ میکنه
علت تعریف دوتا کلاس برای Linq to sql چی هست؟؟

برای پر کردن دیتا گرید از کد زیر استفاده کنید
dataGridViewAam.DataSource = AamList;

restive
چهارشنبه 22 دی 1389, 14:51 عصر
آخه من دو تا DataBase دارم که اطلاعات جداگانه ای رو توشون ثبت می کنم.
این کد که شما نوشتین : dataGridViewAam.DataSource = AamList; در واقع اون کلماتی که با شرط بخونه در DataGridView نمایش می ده؟اینطور نیست؟ ولی من فیلد های دیگه ای از جدول ViwRefrenceTitle رو می خوام وارد گرید ویو بکنم.با این کد این کار انجام می شه؟

مهدی فرزاد
چهارشنبه 22 دی 1389, 14:55 عصر
اون ViwRefrenceTitle که شما توی اسکیول درست کردید اشکال داره چکش کند ارور میده


این دو کد رو هم قبل از dataGridViewAam.DataSource = AamList; بنویس


dataGridViewAam.AutoGenerateColumns = false;
RefrenceTitle.DataPropertyName = "نام فیلد مورد نظر";

restive
چهارشنبه 22 دی 1389, 15:39 عصر
RefrenceTitle اسم یکی از فیلدای جدول View !!! نام فیلد مورد نظر چیه؟
منظورتون:
ViwRefrenceTitle.DataPropertyName = " اسم فیلد جدول" ؟؟؟؟؟

restive
چهارشنبه 22 دی 1389, 16:27 عصر
اون ViwRefrenceTitle که شما توی اسکیول درست کردید اشکال داره چکش کند ارور میده


این دو کد رو هم قبل از dataGridViewAam.DataSource = AamList; بنویس


dataGridViewAam.AutoGenerateColumns = false;
RefrenceTitle.DataPropertyName = "نام فیلد مورد نظر";

خیلی ممنون از راهنماییهاتون، درست شد.
فقط یه ایراد کوچیکه جالب داره .مثلا توی Datagridview که دو تا مقدار باید نشون داده بشه اولین مقدار رو نشون می ده ولی دومین سطر GridView کاملا سفیده و وقتی روش کلیک می کنم مقدار رو نشون می ده!!