Member 10058701 Ответов: 0

Практическое руководство мульти проблему выпадающего списка столбца


Привет Эксперты,
Я реализовал "Multi Column ComboboxColumn" внутри databind datagridview,
Реализовано по этой ссылке ( Многоколоночное поле со списком в DataGridView[^] Но столкнувшись с одной проблемой, когда я привязываю ComboboxColumn к таблице данных, все в порядке,
но когда я привязываю его к data_relation , он показывает все данные после того, как выбор сделан,
ценности исчезают при потере фокуса,
1-Если я открыл новую форму перед закрытием этой формы, то этот столбец выбранных значений исчезнет,
2-или если переместить эту форму или прокрутить datagridview, то ее значения исчезнут, как только появятся сфокусированные значения.

я перепробовал все и много искал, но все еще не могу решить эту проблему.

Мой набор данных имеет две таблицы данных и одну data_relation в обеих таблицах,
родительская таблица tbl_class_attrib
дочерняя таблица tbl_class_attrib_values

я успешно заполняется набор данных, сделанный data_relation на обоих столах, и связываться с обязательными, как этот источник ,
ds = dataset
DgvBs + DgvBs1 = Binding Source

DgvBs.DataSource = ds
DgvBs.DataMember = "tbl_class_attrib" 'Parent Table

DgvBs1.DataSource = DgvBs
DgvBs1.DataMember = "data_relation" 'data_relation with child table

DataGridView1.DataSource = DgvBs

Затем я сделал DataGridviewMultiColumnComboboxColumn к datagridview1
Dim newMColumn As New DataGridViewMultiColumnComboBoxColumn
newMColumn.CellTemplate = New DataGridViewMultiColumnComboBoxCell()
'newMColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
newMColumn.FlatStyle = FlatStyle.Flat
newMColumn.HeaderText = "attrib_value_code"
newMColumn.Name = "attrib_value_code"
newMColumn.DataPropertyName = "attrib_value_name"
newMColumn.DisplayMember = "attrib_value_name"
newMColumn.ValueMember = "attrib_value_code"
newMColumn.DataSource = DgvBs1

DataGridView1.Columns.Add(newMColumn)

DgvBs1 2-й источник привязки

МОЖЕТ ЛИ КТО-НИБУДЬ ПОМОЧЬ ,

Спасибо

Что я уже пробовал:

Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
	'Dim colIndex As Integer = Me.DataGridView1.CurrentCell.ColumnIndex
	Dim cb As System.Windows.Forms.ComboBox = TryCast(e.Control, System.Windows.Forms.ComboBox)

	If DataGridView1.CurrentCell.IsComboBoxCell Then
		If DataGridView1.Columns(DataGridView1.CurrentCell.ColumnIndex).Name = "attrib_value_code" Then
			If cb IsNot Nothing Then

				RemoveHandler cb.SelectionChangeCommitted, AddressOf ComboBox1_SelectionChangeCommitted
				AddHandler cb.SelectionChangeCommitted, AddressOf ComboBox1_SelectionChangeCommitted


			End If
		End If
	End If
End Sub

Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs)

	If DgvBs1.Current IsNot Nothing Then
		Dim Index As Int32 = DgvBs1.Find("attrib_value_name", TryCast(sender, DataGridViewMultiColumnComboBoxEditingControl).Text)
		If Index <> -1 Then
			DgvBs1.Position = Index
DataGridView1.CurrentRow.Cells(DataGridView1.Columns("TxtBoxColumn").Index).Value = CType(DgvBs1.Current, DataRowView).Row.Field(Of String)("attrib_value_name")

			DataGridView1.CurrentRow.Cells(DataGridView1.Columns("attrib_value_code").Index).Value = CType(DgvBs1.Current, DataRowView).Row.Field(Of String)("attrib_value_name")

		End If
	End If
End Sub

CHill60

Вы разместили этот вопрос на форуме в нижней части статьи?

Member 10058701

Нет, я не знал.
пост на этом форуме написан на c# и ему 2 года, я преобразовал его, а затем реализовал самостоятельно,
и эта проблема возникает во всех видах ComboboxColumn, даже в datagridview default ComboboxColumn.

CHill60

Справедливо-это хорошо, что другие участники могут видеть этот комментарий и понимать, сколько работы вы вложили в это. Я посмотрю еще раз

Member 10058701

Спасибо, я жду вашего ответа

Member 10058701

Кто-нибудь здесь может помочь ???

0 Ответов