DotNetBar SuperDataGrid Controllの列をcomboBoxとして(より正確には)としてレンダリングしたいと思いますGridComboBoxExEditControl
。はSuperDataGrid
バインディングソースに接続されています。DataBindingComplete
イベントでは、私は次のものを持っています:
Private Sub SuperGrid_DataBindingComplete(ByVal sender As Object, ByVal e As DevComponents.DotNetBar.SuperGrid.GridDataBindingCompleteEventArgs) Handles SuperGrid.DataBindingComplete
Dim panel As DevComponents.DotNetBar.SuperGrid.GridPanel
panel = e.GridPanel
panel.Columns("ArticleID").RenderType = GetType(MyComboBox)
panel.Columns("ArticleID").RenderParams = New Object() {ArticleBindingSource, "Article", "Article"}
End Sub
そして、MyComboBoxクラスは次のようになります。
Public Class MyComboBox
Inherits GridComboBoxExEditControl
Public Sub New(ByVal Bind As BindingSource, ByVal disp As String, ByVal val As String)
DataSource = Bind
DisplayMember = disp
ValueMember = val
End Sub
End Class
これにより、次のようになります。SuperDataGridはセルに正しい値を表示します。バインディングは正しく、「Article」としてレンダリングされた場合、「ArticleID」のすべての値が正しくなります。問題は、値がArticleID = 1 to ArticleID = 2
(Article ="ArticleNo1"からArticle="Artcle No2")にシフトすると、SuperDataGridが何らかの形で無限ループになり、値が1と2の間でシフトし始めることです。何か間違ったことをしていますか?誰かがこの主題についていくつかのアドバイスを提供することができれば、私は非常に感謝します。PS私もこれを試しました:
panel.Columns("ArticleID").EditorType = GetType(GridComboBoxExEditControl)
Dim art As GridComboBoxExEditControl = DirectCast(panel.Columns("ArticleID").EditControl, GridComboBoxExEditControl)
art.DataSource = ArticleBindingSource
art.DisplayMember = "Article"
art.ValueMember = "ArticleID"
同じ結果が得られました。