Эквивалент Infragistics UltraWinGrid EmptyDataText?

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

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

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

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


person bperreault    schedule 21.05.2009    source источник


Ответы (1)


Я не знаю, поможет ли это, но вот, чтобы закончить ветку. Я не нашел встроенного способа, поэтому решил эту проблему следующим образом: В моем классе, который наследует 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
person bperreault    schedule 13.08.2009