PDA

View Full Version : سوال: خواندن اطلاعات بانک بر اساس یک فیلد



iran_sky
شنبه 27 آذر 1389, 20:14 عصر
با سلام به دوستان
چطوری میشه اطلاعات یک فیلد (مثلا فیلد کد ) رو از بانک بخونیم و در یک combo قرار دهیم و با اننخاب هر کد اطلاعات اون کد در grid نمایش داده شود
ممنون میشم کمکم کنید

hadi-z
شنبه 27 آذر 1389, 20:49 عصر
سلام
کمبو باکس رو که میتونی Bind کنی به فیلدی که میخوای
و تو رویداد TextChange اون از خاصیت filter از BindingSource استفاده کنی تا داده های مورد نظر تو نمایش بده

iran_sky
شنبه 27 آذر 1389, 20:57 عصر
دوست عزیز ممنون از توجهت اما من در سطح مبتدی هستم و متوجه توضیحات شما نمیشوم
اگر مقدوره با یه نمونه نشونم بدین
شرمنده این درخواستو میکنم

hadi-z
شنبه 27 آذر 1389, 21:14 عصر
فکر کنم منظور شما اینه
شرمنده، هول هولکی نوشتم
امیدوارم مفید باشه

taghi.km
شنبه 27 آذر 1389, 21:19 عصر
یه سر به این لینک بزن
http://www.codeproject.com/KB/cs/combobox.aspx
این هم لینک خوبی هست
http://www.akadia.com/services/dotnet_databinding.html

iran_sky
شنبه 27 آذر 1389, 21:29 عصر
ممنون دوست عزیز hadi_z
اما یه مشکلی که هست شما به صورت پیشفرض در داخل grid اطلاعات لود شده من میخوام با انتخاب کد اطلاعات همون فیلد رو در grid نمایش بده

hadi-z
شنبه 27 آذر 1389, 21:36 عصر
خب تو form load از مد زیر استفاده کن:



nemoodarBindingSource.Filter = "ID = 0";

iran_sky
شنبه 27 آذر 1389, 21:39 عصر
جواب نداد دوست عزیز

mmd2009
یک شنبه 28 آذر 1389, 00:22 صبح
با سلام

راه های زیادی برای این کار هست.

مثلا ابتدا اینطوری عمل کنید که کلاس بایندینگ مقدار دیتا ویو رو بگیره که بعدش بتونیم با استفاده از خاصیت Filter ش بتونیم اونو فیلتر بکنیم



DataView dv = new DataView(dt);
bs.DataSource = dv;


و حالا طرز استفادش هم به این صورت هستش :



bs.Filter = "code = '" + listBox1.SelectedValue.ToString() + "'";
dataGridView1.DataSource = bs;


حالا دیگه فرقی نداره از لیست بگیری یا از تکست باکس یا از هر چیز دیگه ای که میدونی.

یک راه دیگش هم استفاده از Linq هستش که باز اونم به همین طرقه و نیازی دیگه به کلاس بایندینگ و دیتاویو نیست.

اونم اینطوری عمل میشه که بعد از اینکه با استفاده از کلاس دیتااداپتو ، دیتاتیبل رو fill کردید کوئری رو به این صوت برای linq بنویسید :



var query =
from order in dt.AsEnumerable()
where order.Field<string>("code") == listBox1.SelectedValue.ToString()
select order;

dataGridView1.DataSource = query.AsDataView();


موفق باشید

iran_sky
یک شنبه 28 آذر 1389, 21:07 عصر
ممنونم دوست عزیز ولی از این کدت چیزی سر در نیاوردم

mmd2009
یک شنبه 28 آذر 1389, 22:42 عصر
خب دوست عزیز کجاشو متوجه نشدی. توضیحات واضح بود. یک مثال بنویس بعدش کدهارو جایگزین کن. هر کجا رو نمیدونستی چطور بنویسی بگو تا توضیح بدم چطوری انجام بدی

در ضمن bs همون bindingsource هست و بقیش هم که سادست.

موفق باشید.

iran_sky
یک شنبه 28 آذر 1389, 22:54 عصر
دوست عزیز من در پست اول برنامه رو گذاشتم
ممنون میشم یه نگاه بندازی

mmd2009
دوشنبه 29 آذر 1389, 00:12 صبح
بفرما دوست عزیز یک مثال برات نوشتم.

iran_sky
دوشنبه 29 آذر 1389, 00:30 صبح
دوست عزیز ممنون ولی فکر کنم منظورمو خوب نمیرسونم
دوست عزیز
من میخوام فقط اطلاعات فیلد کد در داخل یک combo ریخته بشه (و همچنین در داخل گریدم چیزی نباشه) و سپس با انتخاب کد از داخل combo اطلاعات همون کد در داخل grid نمایش بده و همچنین با انتخاب هر دفعه کد جدید یک سطر به گریدم اضافه شود دقیقا مثل یک انبار داری یا صدور فاکتور