Parametri DataGridViewComboBoxColum.

lunedì 02 dicembre 2013 - 01.20

Peppino Profilo | Junior Member

Ciao a tutti.
Uso Visual Basic 2008 e Sql Server 2008.

Ho bisogno di utilizzare delle DataGridViewComboBoxColumn. In rete ho trovato un esempio di cui descrivo parte di seguito, che adattato alle mie esigenze, in parte risolvo il mio problema ad eccezione del parametro della clausola where in quanto se metto il parametro cosi come scritto di seguito ‘16’ nella prima stringa e ‘71’ nella seconda funziona. Io però vorrei che i parametri li devo inserire in base all’esigenza da una comboBox o textBox. Per essere più preciso vorrei che una volta selezionata una voce dalla prima comboBoxColumn, mi estrae ‘IDPro’ che mi fa da paremetro nella seconda. Spero di avere esposto il mio problema in modo chiaro. Ho fatto delle prove usando in commandtext e inserendo dei paramters ma non ha funzionato.
Grazie anticipatamente per l’eventuale risposta.
Ciao a tutti Peppino.
Mi scuso se il testo è un po lunghetto.


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim qry As String
qry = "Select IDPro ,Provincia from Province where IDReg='16' "
mdlGrid.AddComboBoxColumns(DBGrid, 1, "Provincia", "IDPro", "IDProvincia", qry)

qry = "Select IDCom ,Comune from Comuni where IDPro='71'"
mdlGrid.AddComboBoxColumns(DBGrid, 2, "Comune", "IDCom", "IDComune", qry)
End Sub

‘ Modulo interessato
Module mdlGrid

Public Sub AddComboBoxColumns(ByVal grd As DataGridView, ByVal addAt As Integer, ByVal cName As String, ByVal SourceField As String, ByVal DestinationField As String, ByVal qry As String)
Dim cboCol As DataGridViewComboBoxColumn
cboCol = CreateComboBoxColumn(cName, DestinationField)
SetDataSource(cboCol, cName, SourceField, qry)
cboCol.HeaderText = cName
grd.Columns.Insert(addAt, cboCol)
grd.Columns.Remove(DestinationField)
End Sub

Public Function CreateComboBoxColumn(ByVal cName As String, ByVal DestinationField As String) As DataGridViewComboBoxColumn
Dim col As New DataGridViewComboBoxColumn()
With col
.DataPropertyName = DestinationField
.HeaderText = cName
.DropDownWidth = 160
.Width = 90
.MaxDropDownItems = 5
.FlatStyle = FlatStyle.Popup
.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
End With
Return col
End Function

Public Sub SetDataSource(ByVal cboColumn As DataGridViewComboBoxColumn, ByVal cName As String, ByVal SourceField As String, ByVal qry As String)
With cboColumn
.DataSource = FillTable(qry)
.DisplayMember = cName
.ValueMember = SourceField
End With
End Sub

End Module

ridaria Profilo | Expert

devi gestire l'evento selectedIndexChanged nella prima combo.
In questo evento devi andare a prendere l'id interessato per settare il popolamento della seconda combo

Ciao

fammi sapere se basca ciò
Riccardo D'Aria

Peppino Profilo | Junior Member

Ciao a Tutti.
Ciao Riccardo grazie per la risposta, di seguito ho messo la sub sul quale mi hai suggerito di intervenire, non ho cercato ne provato a modificarla perché non so dove. Quindi se non è chiedere troppo, potresti dedicarmi un po del Tuo tempo prezioso per effettuare le modifiche necessarie. Confidando nella disponibilità di tutti Voi come sempre, ringrazio ancora e saluto.
Ciao Peppino.

Private Sub ComboBox_SelectedIndexChanged( _
ByVal sender As Object, ByVal e As EventArgs)

On Error GoTo Err

Dim editCombo As DataGridViewComboBoxEditingControl = CType(sender, DataGridViewComboBoxEditingControl)
If Not editCombo.Focused Then Exit Sub

Select Case DBGrid.CurrentCell.ColumnIndex

Case 0
If editCombo.Items.Count > -1 Then
Dim tempCol2 As DataGridViewComboBoxCell = CType(DBGrid.Rows(DBGrid.CurrentCell.RowIndex).Cells(1), DataGridViewComboBoxCell)

Dim rVal As New FillComboCell
rVal = PopulateComboCell("Select IDCom ,Comune from Comuni where IDReg='16' and IDProv=" + editCombo.SelectedValue.ToString)
With tempCol2
.DataSource = rVal.tb
.DisplayMember = "Comune"
.ValueMember = "IDCom"
.Value = rVal.firstValue
End With

DBGrid.Rows(DBGrid.CurrentCell.RowIndex).Cells(1).Value = rVal.firstValue
rVal = Nothing
End If
End Select
Exit Sub
Err:

MsgBox(Err.Description, MsgBoxStyle.Critical, "ComboBox_SelectedIndexChanged")

End Sub
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5