2011-12-13 12 views
1

私は、ストアドプロシージャから取り込まれたデータセットにバインドされたグリッドを持っています。 データセット(InstrumentName)の列の1つがストアドプロシージャから取得されず、空です。XtraGridハードコード列の値の1つで、オートフィルタを使用します。

別の列(Id)の値に応じて、この列の各行の値を何かに設定する必要があります。私は名前とIDのリストをメモに入れています。私は自分のリストから名前を設定したいと思っています。

私はInitialized()メソッドでこれを行うと、値が設定されているが、グリッドにはないことがデバッグでわかります。 )(DataMonitorGridViewCustomColumnDisplayTextで(ループなし)

for (int i = 0; i < view.DataRowCount; i++) 
{ 
    object Uic = view.GetRowCellValue(i, view.Columns["Uic"]); 
    int UicInt = 0; 

    if ((Uic != null) && (int.TryParse(Uic.ToString(), out UicInt))) 
     view.SetRowCellValue(i, view.Columns["InstrumentName"], GetName(UicInt)); 
} 

私もそれを行うことを試みた:グリッドが再描画され、私の設定値が失われているよう

Iを初期化()で実行されている。このループを持っている...ようです

最後に、新しい値にAutoFilterRowを使用できるようにする必要があります。今まではすべてが可能でしたが、オートフィルタはできませんでした。

答えて

2

ストアドプロシージャからコレクションを作成することをお勧めします。そのコレクションをグリッドのデータソースとして使用できます。自分のインメモリコレクションから値を割り当てるInstrumentNameを含む適切なプロパティをすべて含むクラスを作成します。

更新
下の解説に基づいて - 私はあなたが行が追加されたときにトリガするDataRow.RowChangedイベントを使用することができると信じています。次に、あなたが望む 'Id'をつかみ、メモリ内のコレクションを照会します。

私はまだ元の推奨事項に戻ります。 DataTableは緩やかに型付けされているため、厳密に型指定されたクラスははるかに柔軟性があり、データの整合性を保証します。あなたのDataTableに列のFoo(データ型:int)を持っている場合は、バー(データ型:文字列)、およびバズ(データ型:文字列): - IList<T>あなたがコレクションを埋めることができ

public class FooBarBazEntity{ 
    public int Foo { get; set; } 
    public string Bar { get; set; } 
    public string Baz { get; set; } 
} 

その構造を模倣するクラスを作成しますまたはIEnumerable<T> - LINQでは非常に簡単です。

+0

私は既にこのコレクションをクライアントに持っているので、ストアドプロシージャを使用したくありません。それは、別のデータベースから来て、それはすべての時間を得るために高価になるだろう... – Stavros

+0

*私はストアドプロシージャから読み込まれたデータセットにバインドされているグリッドを持っています。ストアドプロシージャを使用するかどうか、コレクションへのクエリ - これがLINQの目的です。 – IAbstract

+0

私はあなたが何を意味するかわかりません...私のデータセットはグリッドに表示したいデータがありません。グリッドに実際にデータセットと計算された列を挿入したいのですが... – Stavros

関連する問題