1

キューブから生成されたDataTableがあり、列名は次のように宣言されています。

【対策】【在庫数】

ただし、以下を使用してRowFilterを適用しようとすると、DataTableは正しく入力されます。

"[メジャー]。[在庫数]>=2000"

次のエラーが発生します。

「[Measures.StockQty]が見つかりません

また、列名だけを使用してみました。

"[在庫数]>=2000"

しかし、これも見つかりませんというエラーで失敗します。

ピリオドを含む列名を使用してDataTableをフィルタリングすることは可能ですか?

4

2 に答える 2

1

なぜあなたRowFilterはまったく使いたいのですか?.NET 3.5 以降を使用している場合は、代わりにより強力で読みやすい Linq-To-DataTable を使用することをお勧めします。

IEnumerable<DataRow> filteredRows = tblMeasures.AsEnumerable()
    .Where(r => r.Field<int>("Stock Qty") >= 2000);

DataTableもう一度必要な場合:

DataTable tblFiltered = filteredRows.CopyToDataTable();

ちなみに、列の名前がDataTable最後"Stock Qty"のアプローチである場合は、括弧で囲む必要があるため、機能するはずです。

tblMeasures.DefaultView.RowFilter = "[Stock Qty] >= 2000";

したがって、デバッガーを使用して、列の実際の名前と型を確認する必要があります。

于 2012-12-19T08:36:31.403 に答える
1

データテーブル列の名前を変更できます (ピリオドを「_」に置き換えるため) & それらは行フィルターを試します。

例えば。:

dataTable.Columns["Stock Qty"].ColumnName = 
                 dataTable.Columns["Stock Qty"].ColumnName.Replace(" ", "_");
于 2012-12-19T08:36:39.253 に答える