Инфраструктура UltraWinGrid EmptyDataText Эквивалент? - PullRequest
1 голос
/ 21 мая 2009

Мы используем Infragistics UltraWinGrid в качестве базового класса для настраиваемых элементов управления. Один из проектов, который будет использовать этот элемент управления для отображения результатов поиска, должен отображать удобное для пользователя сообщение, когда совпадений не найдено.

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

Есть ли допуск в UltraWinGrid для этого типа использования? Если так, где бы я нашел это скрытым. :-)

Если эту функциональность нужно кодировать, я могу придумать алгоритм, который бы добавлял пустую запись в любой набор записей и помещал ее в сетку. По вашему мнению, это лучший способ справиться с решением?

1 Ответ

2 голосов
/ 13 августа 2009

Я не знаю, поможет ли это, но мы заканчиваем тему. Я не нашел встроенный способ, поэтому решил эту проблему следующим образом: В моем классе, который наследует UltraGrid

Public Class MyGridPlain
Inherits Infragistics.Win.UltraWinGrid.UltraGrid

Я добавил два свойства, одно для указания того, что разработчик хочет сказать в случае пустых данных, и другое, чтобы позволить разработчику разместить свое сообщение там, где они этого хотят

Private mEmptyDataText As String = String.Empty
Private mEmptyDataTextLocation As Point = New Point(30, 30)Public Shadows Property EmptyDataTextLocation() As Point
Get
     Return mEmptyDataTextLocation
End Get
Set(ByVal value As Point)
    mEmptyDataTextLocation = value
    setEmptyMessageIfRequired()
End Set
End Property

Public Shadows Property EmptyDataText() As String
Get
   Return mEmptyDataText
End Get
Set(ByVal value As String)
  mEmptyDataText = value
  setEmptyMessageIfRequired()
End Set
End Property

Я добавил метод, который проверит пустые данные и установит сообщение, если так. И еще один метод, который удалит существующее пустое сообщение.

    Private Sub setEmptyMessageIfRequired()

        removeExistingEmptyData()

        'if there are no rows, and if there is an EmptyDataText message, display it now.
        If EmptyDataText.Length > 0 AndAlso Rows.Count = 0 Then
            Dim lbl As Label = New Label(EmptyDataText)
            lbl.Name = "EmptyDataLabel"
            lbl.Size = New Size(Width, 25)
            lbl.Location = EmptyDataTextLocation
            ControlUIElement.Control.Controls.Add(lbl)
        End If
    End SubPrivate Sub removeExistingEmptyData()
       'any previous empty data messages?
       Dim lblempty() As Control = Controls.Find("EmptyDataLabel", True)
       If lblempty.Length > 0 Then
           Controls.Remove(lblempty(0))
       End If

   End Sub

Последнее - я добавил проверку пустых данных в событие InitializeLayout сетки.

Private Sub grid_InitializeLayout(ByVal sender As Object, _
      ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) _
      Handles MyBase.InitializeLayout    

     setEmptyMessageIfRequired()

End Sub
...