PDA

View Full Version : در مورد datagridview



rahil_2007
دوشنبه 22 مهر 1387, 12:40 عصر
با سلام
من میخام رابطه پدر و فرزندی بین دو فیلد که بصورت کمبو باکس و در یک دیتاگرید ویو تعریف کرده ام برقرار کنم.
چطور باید اینکار رو انجام بدم؟(اگر کدی در این زمینه دارید برام بذارید)

با تشکر

baran_mehr
دوشنبه 22 مهر 1387, 14:17 عصر
سلام داداشی.
منظورتون از پدر رو فرزندی چیه؟؟
ایا میخواین اول کمبوی بالا پر بشه و با توجه به اون کمبوی پایین پر بشه؟؟

rahil_2007
دوشنبه 22 مهر 1387, 14:36 عصر
بله. همینطوره

baran_mehr
دوشنبه 22 مهر 1387, 14:47 عصر
داداشی من خودم این کار رو تو گرید انجام ندام اما فکر میکنم بشه به این حالت نوشت.
فرض کنید ما کاری با جدول نداریم و میخوایم دو کمبوباکس رو به همین حالتی که شما میخوین در بیاریم.
برای این کار میتونیم بنویسیم که اگر کمبوی اول برابر مقدار بود تو لیست کمبوی دوم چه گذینه هایی وارد بشه
به کد زیر توجه کنید:

If Combo1.Text = "سواری" Then
Combo2.Items.Add("پراید - پیکان")
Combo2.Items.Add("پژو - سمند")
Combo2.Items.Add("بنز - بی ام وه ")
End If
If Combo1.Text = "کامیون" Then
Combo2.Items.Add("بنز")
Combo2.Items.Add("ولو")
Combo2.Items.Add("اویکو")
Combo2.Items.Add("اسکانیا")
End If
حالا همین کار رو با جدول انجام میدیم.کافیه که بهد از انتخاب کمبوی اول ،یک Select در جدول بر اساس مقدار کمبوی اول صورت بگیره و اطلاعات اون داخل کمبوی دوم نمایش داده بشه.موفق باشی
(داداشی لبخند یکی از زیباترین هدیه هاست که میتونی به عزیز ترین هات بدی)

rahil_2007
دوشنبه 22 مهر 1387, 14:58 عصر
من میخام اطلاعات را فقط از بانک بگیره(هر دو کمبو رو)اون هم توی گریدویو.
غیر از گریدویو خودم اینکار رو کردم..

baran_mehr
دوشنبه 22 مهر 1387, 15:14 عصر
حالا چرا میخوای بزنی:لبخند::بوس:
خوب برای اون کار رو هم تو پست قبلم اشاره کردم.اول کمبوباکس اولت رو پر کن با دستور Select و بعد بر اساس انتخاب از کمبوی اول کمبوی دومت رو پر کن (شرط Select کمبوی دوم رو انتخاب کمبوی اول بزار):لبخندساده:

rahil_2007
دوشنبه 22 مهر 1387, 15:21 عصر
اگر نوشته من اینو القا کرد ببخشید
اما اینکاررو بصورت ویزاردی یا کدنویسی توی گریدویو بلدنیستم.در ضمن اطلاعات کمبو اول را از یک جدول و اطلاعات کمبو دوم رو از یه جدول دیگه توی بانک میریزه که این دو جدول یک فیلد مشترک دارند.

baran_mehr
دوشنبه 22 مهر 1387, 15:35 عصر
منم این کار رو تو گرید انجام ندارم اما شما هر طوری که خودتون مایل هستید میتونید از این روش استفاده کنید.
ببین کمبوی اولت که باید یک سری چیز مشخص باشه دیگه، که بتونی کمبوی دوم رو بر اساس اون پر کنی. و یا حداقل اگر هم مشخص نیست باید به عنوان پارامتر جستجوی کمبوی دوم باشه.
فرض کن با همچین کدی اطلاعات کمبوی اول رو استخراج میکنی و تو DataTable یا همون dt می ریزی و بعدشم که میتونی با کمبوی اولت بایند کنی.

cmd.CommandText = "SELECT فیلد FROM جدول where شرط
cmd.Connection = Cnt
da.SelectCommand = cmd
dt.Clear()
da.Fill(dt)
حالا میتونی Select دوم رو بر اساس انتخاب کمبوی اولت بنویسی. با کمی تفاوت با دستور بالا:

cmd.CommandText = "SELECT فیلد FROM جدول where شرط گذینه انتخابی کمبوی اول
cmd.Connection = Cnt
da.SelectCommand = cmd
dt.Clear()
da.Fill(dt)
و بایند کنی به کمبوی دومت.

rooshan2008
دوشنبه 22 مهر 1387, 16:02 عصر
سلام
فکر کنم قبلاً همین چیزی روکه شما می خوستی نوشتم البته برای خودم درست کار کرد و الانم دارم باهاش کار می کنم (اگه سوالت رو دست متوجه شده باشم)




Dim Connecting As New System.Data.SqlClient.SqlConnection
Dim Command1 As New SqlClient.SqlCommand
Dim tb As New DataTable
Dim Data_Adabter As New SqlClient.SqlDataAdapter
Connecting.ConnectionString = Con_String()
Connecting.Open()
Command1.Connection = Connecting
Command1.CommandText = "select * from roshanfekr"

Data_Adabter.SelectCommand = Command1
Data_Adabter.Fill(tb)

Column2یک شی داخلی دیتاگرید هست (همون کامبوباکس)

Column2.DataSource = tb
Column2.ValueMember = "id"
توضیح:وقتی دستور Sqlاجرا شد نتیجه او داخل شی Tb ریخته می شه و بعد این شی رو به کامبوی داخل datagridview می دید (دوخط کد بالا) و valuemember رو برابر "id" قرار میدم این "Id"نام فیلد تیبل بانک اطلاعاتی من هست(شما هر فیلدی دوست داری داخلش بزار) ...ok

امید وارم منظورت این بوده باشه ...با آرزوی موفقیت program_vb2006@yahoo.com