1

実行時にバインドされるデータセット内の複数のテーブルを含むマスター/詳細設定で使用している Winforms プロジェクトに DevExpress XtraGrid.GridControl があります。GridControl の可視グリッド セクションの下部にドラッグ可能なバーがあり、データのサイズが変更されたときにコントロールのサイズに拡張されないという点で、グリッドの視覚的な動作は多少不安定です。

私の実装では、GridControl は占有するタブ ページを埋めるためにドッキングされており、この 1 つの例外を除いて期待どおりに動作します。ただし、グリッド自体は、フォームで使用可能な表示領域の半分しか使用していません。これは、データが行と詳細行の全画面に表示されるため問題ですが、ユーザーはサイズ バーを画面の下部にドラッグしてビューのサイズを手動で変更する必要があります。

各ビューを登録時に手動で展開していますが、これを自動的に実行せず、ユーザーがプラス記号をクリックして展開できるようにしても、この問題は解決しません。プログラムでビューを展開するコードのセクションを次に示します。

For x As Integer = 0 to v.RowCount - 1
  For y as integer = 0 to v.GetRelationCount(x) - 1
    v.ExpandMasterRow(x, y)
  Next
Next

GridView オブジェクトを GridControl 内で「ドッキング」する方法を探しましたが、方法が見つかりませんでした。データが GridControl/View を自動的に満たすようにする方法はありますか? この問題についてご支援いただきありがとうございます。

4

3 に答える 3

0

通常、GridControl に表示する DataTable ごとに GridView を用意する必要がありますが、実行時にすべて行う場合は、表示するデータソース/DataTable ごとに同じ Gridview を初期化する必要があります。

//GridView view;
view.PopulateColumns();
view.OptionsView.ColumnAutoWidth = true;
view.BestFitMaxRowCount = 10000;   // or less ? depends on your data vs preformance
view.BestFitColumns();
// you may want to limit some of the columns width
foreach (GridColumn item in view.Columns)
{
    item.Width = (item.Width > 1000) ? 1000 : item.Width;
}
//GridControl ctrl;    // if you do this in form load you  need to do a force initialize afterwards.
ctrl.ForceInitialize();
于 2013-05-21T07:13:16.653 に答える
0

XtraGrid がサブ ビューを作成するとき、子ビューの DetailHeight を優先して、親ビューの DetailHeight を無視するようです。ビューの DetailHeight を登録どおりに設定すると、問題が修正されました。

Private Sub grdMaster_ViewRegistered(sender As System.Object, e As DevExpress.XtraGrid.ViewOperationEventArgs) Handles grdMaster.ViewRegistered
  Try
    Select Case e.View.GetViewCaption()
      Case "parent_child"
        Dim view As Grid.GridView = e.View
        view.DetailHeight = 10000
    End Select
  Catch ex As Exception
    'handle error.
  End Try
End Sub

皆様のご支援とご協力に感謝いたします。

于 2013-05-22T13:23:08.843 に答える
0

印刷画面では、1 つのパネルまたはタブ内にすべてをドッキングしているようです。しかし、そのパネルはフォーム自体にドッキングされていません。それが問題ではありませんか?

あなたはいつもするべきです:

GridControl1.DockStyle = DockStyle.Fill;

また、コンテナーをドッキングします。

Panel1.DockStyle = DockStyle.Fill
于 2013-05-21T23:43:09.963 に答える