DataGridViewでの絞り込みの疑問(CLR)

[戻る]
初心者 2009/10/11(日) 21:43:20
VC++2005(CLR)の質問です。

DataGridViewで絞り込み(抽出)をしようと、DataTable->DefaultView->RowFilterを使い
ました。
しかし、ここで

  DataTable->DefaultView->RowFilter= "aaa='abc'";

のようにするとちゃんと絞り込み(抽出)出来るのですが、これを文字列ではなく、

   String^ txt = this->TextBox->Text;
  DataTable->DefaultView->RowFilter= "DataGridView->Columns[i]->HeaderText-
>ToString()=txt";

のような感じで取得しようとすると失敗します。こういった方法は可能なのでしょう
か?
よろしくお願いします。

しま 2009/10/11(日) 22:02:19
>  DataTable->DefaultView->RowFilter=
> "DataGridView->Columns[i]->HeaderText->ToString()=txt";

これは
DataTable が DataGridView のことを知っているということでしょうか?
更にいえば、HeaderText->ToString()=txt がどういう意味なのか
他人に判るように(何を拾いだそうとしたいのかあなたの意図)説明
してください

初心者 2009/10/11(日) 23:40:54
DataTable^ DataTable = (DataTable^)this->dataGridView1->DataSource;
for(int i=0; i<this->dataGridView1->RowCount; i++){
    for(int n=0; n<this->dataGridView1->ColumnCount; n++){
        String^ aaa = this->ComboBox1->Text;
        String^ bbb = this->dataGridView1->Rows[i]->Cells[n]->Value->ToString
();
        if(!::String::Compare(aaa, bbb)){
           String^ str = this->dataGridView1->Columns[n]->HeaderText->ToString
();
           DataTable->DefaultView->RowFilter = "str = aaa";
        }
    }
}

//--------------------------------------------------------------------------

上記がソースです。
DataTable->DefaultView->RowFilter = "str = aaa"; のダブルクォーテーションがお
かしいのは分かりますが、これが生の文字列だと、"あああ = 'い'"でフィルタ出来るの
ですが、変数を使った場合の書き方が分からないのです。
ダブルクォーテーションを外すと、strにaaaが代入されるし。

これで意味が通っているでしょうか?よろしくお願いします。

しま 2009/10/12(月) 00:31:01
最近は C++ ではなく C# を使っているので間違った言い回しをしているかも
しれませんが、

string.Format("{0}='{1}'", str, aaa);

は使えないでしょうか?

初心者 2009/10/12(月) 10:31:05
[[解決]]
>しまさん

ありがとうございます。無事、String::Formatを使って解決できました。
当方、.NETを使い始めて間もないため、こういったちょっとした事で躓くことが多々あ
ります。
もうちょっと勉強をしたいと思います。本当にありがとうございました。

古いスレッドには追加発言できません。