2013-05-20 4 views
1

У меня есть DevExpress XtraGrid.GridControl в проекте Winforms, который я использую с настройкой Master/Detail с несколькими таблицами в наборе данных, который связан во время выполнения. Визуальное поведение сетки несколько неустойчиво в том, что в нижней части видимой секции сетки GridControl имеется панель с возможностью перетаскивания, которая не изменяется до размера элемента управления при изменении размера данных.Как подключить просмотр внутри XtraGrid.GridControl?

В моей реализации GridControl состыкован, чтобы заполнить вкладку, которую он занимает, и с этим единственным исключением работает как ожидалось. Однако сама сетка использует только половину видимой области, доступной в форме. Это проблема, потому что данные находятся на полном экране строк и подробных строк, но пользователь должен вручную изменить размер представления, перетащив строку размера в нижнюю часть экрана.

Я вручную расширяю каждый вид по мере их регистрации, хотя эта проблема сохраняется даже тогда, когда я автоматически не выполняю это и не позволяю пользователю расширять их, щелкнув знак «плюс». Вот фрагмент кода, который программно расширяет вид:

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 автоматически? Спасибо за любую помощь по этому вопросу.

+0

Это поможет, если вы можете поместить некоторый экран печати, возможно, я смогу помочь –

+0

Я загрузил изображение сетки до и после изменения размера сетки по следующему URL: [link] (http: // postimg. org/image/b4uqzho9f /) – JSM

+0

У меня есть дополнительная информация. В сетке отображается больше строк, если в самой верхней таблице набора данных есть дополнительная строка. Например, если моя родительская таблица имеет 1 строку, то сетка будет показывать 50%, но если есть две строки, она показывает высоту всего экрана. Кажется, что даже если для заполнения экрана имеется множество дочерних строк, сетка сама определяет размер подсчета родительских строк. – JSM

ответ

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 

Благодарим всех вас за помощь и помощь.

0

Обычно вы хотите иметь GridView для каждого DataTable, который вы хотите показать в GridControl, но когда вы все это выполняете во время выполнения, вам нужно будет инициализировать тот же Gridview для каждого источника данных/DataTable, который вы хотите показать.

//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(); 
+0

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

0

На вашем экране для печати кажется, что вы состыковываете себя внутри одной панели или вкладки. Но эта панель не состыкована в самой Форме, разве это не проблема?

Вы всегда должны делать:

GridControl1.DockStyle = DockStyle.Fill; 

, а также док контейнера:

Panel1.DockStyle = DockStyle.Fill 
+0

В форме есть элемент управления вкладкой, на котором есть табуляция для этой сетки. Страница по существу является панелью и расширяется и с правильной подписью с формой. Сетка закрепляется внутри страницы, а также расширяется и сжимается соответствующим образом.Линия, которую вы видите в захвате экрана, находится внутри элемента управления XtraGrid и перемещается в пределах элемента управления. Представления генерируются внутри пространства управления, и, как таковые, я не могу докровать. – JSM

+0

Честно говоря, очень сложно помочь вам с такой конкретной проблемой, если вы можете воспроизвести это в более простом коде, а затем отредактировать квесты с помощью кода дизайнера, который вы можете копировать, а затем действительно вникать в проблему, что для мне все еще не ясно. Im jus пытается помочь :) –

 Смежные вопросы

  • Нет связанных вопросов^_^