Infragistics UltraWinGrid を使用してグリッドにデータを表示しました。このグリッドには、1 つのチェック ボックス列があります。この列のヘッダーにチェック ボックスを追加して、selectAll オプションを追加しました。ここで、ボタンクリックイベントでこのヘッダーチェックボックスを有効/無効にして、ユーザーがアクションを実行するのを制限したいと考えています。誰でもこれを行う方法を教えてもらえますか? 前もって感謝します。
2 に答える
ヘッダーのチェック ボックスは、HeaderCheckBoxUIElement によって提供されます。これには、チェック ボックスが有効かどうかを判断するために設定できる有効なプロパティがあります。HeaderCheckBoxUIElement への参照を取得するには、MouseEnterElement を使用して、そのイベントで Enabled プロパティを設定します。有効になっている場合の追跡には、列の Tag プロパティを使用できます。
VB のコード:
Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim col As UltraGridColumn = Me.UltraGrid1.DisplayLayout.Bands(0).Columns("OnSite")
col.Tag = (TypeOf col.Tag Is Boolean AndAlso CBool(col.Tag) = False)
End Sub
Private Sub UltraGrid1_MouseEnterElement(sender As Object, e As Infragistics.Win.UIElementEventArgs) Handles UltraGrid1.MouseEnterElement
If TypeOf e.Element Is HeaderCheckBoxUIElement Then
Dim element As HeaderCheckBoxUIElement = DirectCast(e.Element, HeaderCheckBoxUIElement)
element.Enabled = (TypeOf element.Column.Tag Is Boolean AndAlso CBool(element.Column.Tag) = True)
End If
End Sub
C# のコード:
void ultraGrid1_MouseEnterElement(object sender, UIElementEventArgs e)
{
if (e.Element is HeaderCheckBoxUIElement)
{
HeaderCheckBoxUIElement element = (HeaderCheckBoxUIElement)e.Element;
element.Enabled = (element.Column.Tag is bool && (bool)element.Column.Tag == true);
}
}
private void button1_Click(object sender, EventArgs e)
{
UltraGridColumn col = this.ultraGrid1.DisplayLayout.Bands[0].Columns["OnSite"];
col.Tag = (col.Tag is bool && (bool)col.Tag == false);
}
上から2つのオプションを考えることができます:
1) ユーザーがどのチェックボックスもクリックできないようにする場合は、承認されていない場合は列全体を非表示にします。
2) ユーザーがグリッド内のすべての項目を選択できないようにする場合は、selectAll メソッドにコードを追加して、ユーザーが許可されていない場合に要求を無視します。
アップデート
3) それをサポートするグリッドのバージョンを使用している場合は、以下を使用できます。
grid.DisplayLayout.Override.HeaderCheckBoxVisibility = HeaderCheckBoxVisibility.Never
ユーザーが許可されていない場合に、グリッドを含むフォームがロードされたとき。