PDA

View Full Version : سوال: کمبو باکس در datagridview



f.nabavi
شنبه 05 بهمن 1387, 13:26 عصر
سلام. من یه datagridview دارم که به یه dataset متصلش کردم. حالا میخوام یکی از ستونهای datagrid به صورت combo باشه و از یه table دیگه پر بشه. مثلا برای انتخاب نام شهر محل تولد یه کمبو باز بشه که محتویات جدول نام شهر ها رو داشته باشه. این کمبو رو چه جوری بسازم؟

ali_md110
شنبه 05 بهمن 1387, 21:47 عصر
سلام دوست من
ابتدا شما ستونهای دیتاکراید رو از طریق کد نویسی اضافه کنید

Dim col_id_kala As DataGridViewTextBoxColumn
Dim col_kala_name As DataGridViewComboBoxColumn

Public Sub Design_Gridview(ByRef Gridview As DataGridView)
' دیتاگراید ویودر حالت اجرا
Gridview.DataSource = Nothing
Gridview.Columns.Clear()
Gridview.Rows.Clear()
Gridview.Refresh()
Gridview.AutoGenerateColumns = False
col_id_kala = New DataGridViewTextBoxColumn
With col_id_kala
.Name = "col_id"
.DataPropertyName = "id_kala"
.HeaderText = "کد کالا"
.Width = 80
End With
col_kala_name = New DataGridViewComboBoxColumn
With col_kala_name
.Name = "col_kala_name"
.DataPropertyName = "name_kala"
.HeaderText = "شــــرح کالا"
.Width = 200
.AutoComplete = True
.DisplayStyleForCurrentCellOnly = True
.FlatStyle = FlatStyle.System
End With

Gridview.Columns.Add(col_id_kala )
Gridview.Columns.Add(col_kala_name )

End Sub
سپس روالی برای پر کردن یک کامبوباکس بسازید

Private Sub fill_sombodg(ByVal ComboBox1 as DataGridViewComboBoxColumn )
ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
Dim CNN As OleDbConnection
Dim DAP As OleDbDataAdapter
Dim DS As DataSet
Dim cnnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
CNN = New OleDbConnection(cnnstr)
cmd = New OleDbCommand
DAP = New OleDbDataAdapter("select * from table1", cnnstr)
DS = New DataSet
DAP.Fill(DS, "table1")
ComboBox1.DataSource = DS.Tables("table1")
ComboBox1.DisplayMember = "name_kala"
ComboBox1.ValueMember = "id"

DAP.Dispose()

End Sub
برای صدا زدن در فرم لود ابتداDesign_Gridview رو صدا بزن با یک ارگومان که همون دیتاکراید ویو شماست سپس روال بعدی مثل fill_sombodg(DG.Columns("col_kala_name")

f.nabavi
یک شنبه 06 بهمن 1387, 08:48 صبح
ممنون از توجهتون. بازم سئوال دارم: شما کل Grid رو خالی کردید. در حالیکه من میخوام از dataset پر بشه. اگر خالیش نکنم، combo به انتهای جدول اضافه میشه و من دوتا از اون ستون دارم. یکی که داخل dataset بوده و دیگری که من اضافه کردم. حالا چی کار کنم؟

ali_mnkt
یک شنبه 06 بهمن 1387, 10:56 صبح
یه راه راحت تر بدون کد نویسی اینه که از propety های مخصوص اون ستونی که combobox کردی استفاده

کنی یعنی توی property هاش ابتدا datasource و سپس datamember رو روی اون جدولی که می خوای ازش

پر بشه تنظیم کن

f.nabavi
یک شنبه 06 بهمن 1387, 13:00 عصر
واقعا ممنون. بدون کد خیلی بهتره!:بامزه: