0

(インフラジスティックス 2008 Vol. 3、CLR 2.0)

InfragisticsUltraGridには、列チューザー ユーザー コントロールが付属しています。これは、列の非表示状態を切り替えるチェックボックスを備えた列の単純な垂直配置です。さらに、列を選択してグリッドに直接ドラッグできるため、後で手動で配置する必要がありません。(これは、既に多くの表示されている列があり、新しい列がどこにあるのか見当がつかない場合に特に便利です。)

に基づいて独自の列チューザーを構築していますUltraTree。チェックボックスを同じように動作させることは問題ではありませんでしたが、列をツリーからグリッドにドラッグして受け入れさせる方法が見つかりませんでした。

私のツリーでは、それぞれUltraTreeNodeTag次の がありますstruct

Private Structure DraggableGridColumn
    Public NodeKey As String
    Public NodeName As String
    Public ParentKey As String

    Public Column As UltraGridColumn
End Structure

次に、次のようなイベントがあります。

Private Sub columnsTree_SelectionDragStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles columnsTree.SelectionDragStart
    If columnsTree.SelectedNodes.Count <> 1 Then
        Return
    End If

    If Not TypeOf columnsTree.SelectedNodes(0).Tag Is DraggableGridColumn Then
        Return
    End If

    Dim column As UltraGridColumn = CType(columnsTree.SelectedNodes(0).Tag, DraggableGridColumn).Column

    columnsTree.DoDragDrop(column, DragDropEffects.All)
End Sub

DoDragDrop呼び出しでは、(columnタイプUltraGridColumn) もcolumn.Header(タイプ ) もColumnHeaderグリッドに受け入れられません。間違ったタイプを送信している、および/またはグリッドstructがいくつかの追加情報を含む特別なものを期待していると思います。残念ながら、Infragistics の通常の列チューザーがこれを適切に行うイベント (列チューザー側とグリッド側の両方) をキャッチできませんでした。通常のドラッグ アンド ドロップ イベントは発生しないようです。

4

1 に答える 1

0

それが機能するには、列がUltraTreeNodeである必要があるようです。おそらく、列データをある種の(派生した)UltraTreeNodeに配置しているので、それをデカントして、DoDragDrop呼び出しでそのオブジェクトを使用してみてください。

--MarkusQ

于 2009-03-03T01:12:06.827 に答える