2009-03-12 17 views
15

WinFormsユーザーコントロールにUltraGridを配置しました。いくつかの設定を調整して、読み取り専用の複数行選択テーブルとしてグリッドを使用できるようにしました。しかし、1つの問題があります。デフォルトでは、最初の行が選択されているようです。Infragistics UltraGrid:最初の行のデフォルト選択を削除する方法

ただし、Selected.Rowsプロパティは空であり、ActiveRowプロパティはnullです。

行が選択されているように見えますが、実際には選択されていないため、選択を削除できません。

この動作を制御するには、UltraGridのどこかに設定が隠されている必要があります。 これが当てはまらない場合は、回避策がありますか?

ありがとうございました。

答えて

21

私はあなたのすべてと共有よソリューションを、発見したいくつかのより多くの研究の後:

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset(); 
+0

私やGianniではうまくいきませんでした。 GianniのアプローチはListObjectデータを吹き飛ばします。それがうまくいかなかった理由を助けてくれますか?私はデフォルトのプロパティを持つ単純なグリッドを取り、それをバインドし、次に推奨される2行を作成しました。変化なし。 – ChadD

+0

これは私のために働いた。同様の問題を抱えている人にとっては、行には「選択済み」と「有効」の2つのプロパティがあることに注意してください。 0行以上の行が選択されていても、1行だけがアクティブです。残念ながら、Selected行とActive行は、同じ方法で(デフォルトで)強調表示されています。 Active行は、行ヘッダーに三角形で示されます(行ヘッダーが有効な場合)。ActiveRowAppearance.Reset()呼び出しは、アクティブな行を強調表示しないようにUltraGridに指示します。お役に立てれば。 – AlfredBr

3

私はexactelyあなたが持っていた同じ問題を抱えているが、Gerrieシェンクのソリューションは、私のために動作しません。 。 私はこのトリックを使用しました: MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.ActiveRow = null;

+0

これは、行0のListObjectデータを吹き飛ばします。 – ChadD

1

どういうわけか、上記の解決策のどれも私のために働いていませんでした。私の場合は、単にアクティベーション/選択がまったく起こらないことを望んでいました。だから私は以下のことをしました。それは最良の解決策ではないかもしれませんが、機能します。

private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e) 
    { 
     LayoutVisulizerUltraGrid.ActiveRow = null; 
    } 
3

はこれを試してください:あなたは、行をマークしたくない場合は

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

this.ultraGrid1.SyncWithCurrencyManager = false; 
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False; 
+1

ありがとうございます。これは私を夢中にさせていた。 – Keith

+0

ありがとう、うわー、これはとてもあいまいです。 – Mangist

3

これは、グリッドの「アクティブアピアランス」を抑制することで私を助けました選択された「選択された外観」について同じことをしなければなりません。

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 
0

選択した行を完全に無効にしてから、ActiveRowをnullに設定すると選択がクリアされます。

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None; 
2

「選択済み」と「アクティブ」を区別することが重要です。グリッドは決して自動的に行を選択しませんあなたが見ているのはActiveRowです。選択された行と同じように強調表示されます。

グリッドのActiveRowはCurrencyManagerと同期されているため、デフォルトでグリッドの最初の行が強調表示されます。 ActiveRowAppearanceとActiveCellAppearanceをリセットすると、ActiveRowからデフォルトのハイライトが削除されます。

 this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
     this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset(); 

しかし、それは、これはアクティブ行になってから行を妨げるものではないことに注意することが重要ですが、それだけで、グリッドは、もはやアクティブな行を強調していないこと。行はまだアクティブなので(これを防ぐ方法はありません)、アクティブな行を強調表示するものはまだ行を強調表示します。たとえば、アプリケーションにスタイルライブラリ(* .isl)ファイルをロードして、スタイルをActiveRowに適用すると、それでも表示されます。あなたは完全にすべてのプロパティ設定とスタイルライブラリの設定を無視して、より徹底した方法でアクティブな行の外観を無効にしたい場合は

、あなたはこれを行うことができます。このプロパティは、V9に追加されたこと

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

注意を。 2古いバージョンでは存在しません。

関連する問題