2009-05-21 6 views
1

カスタマイズされたコントロールの基本クラスとして、Infragistics UltraWinGridを使用しています。このコントロールを使用して検索結果を表示するプロジェクトの1つに、一致するものが見つからない場合にユーザーにやさしいメッセージを表示するという要件があります。Infragistics UltraWinGrid EmptyDataText相当ですか?

この機能を派生したコントロールにカプセル化したいので、コントロールを使用するプログラマーが表示するようにメッセージを設定する以外のカスタマイズは必要ありません。これは一般的なやり方で行われなければなりません。一つのサイズはすべてのデータセットに適合します。

このタイプの使用のためのUltraWinGridには余裕がありますか?もしそうなら、どこに隠れているのでしょうか? :-)

この機能をコード化する必要がある場合、どのレコードセットに空白のレコードを追加してグリッドに配置するアルゴリズムを考えることができます。あなたの意見では、これはソリューションを処理する最善の方法ですか?

答えて

2

これが役立つかどうかわかりませんが、ここでスレッドを仕上げることにします。私は道に建て見つけることができませんでしたので、次のように私はこの問題を解決:私のクラスでのUltraGrid

Public Class MyGridPlain 
Inherits Infragistics.Win.UltraWinGrid.UltraGrid 

を継承している私は、開発者が空のデータの場合には言いたいかを指定するために、2つのプロパティ、1を追加しました彼らはそれが

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 
関連する問題