- PR -

DataViewのRowFilterを保持するには

1
投稿者投稿内容
はな
常連さん
会議室デビュー日: 2002/12/19
投稿数: 28
投稿日時: 2003-01-06 17:08

VS.NET(C#でコードビハインド)で作業しています。
データベースのレコードか多いので、抽出して表示したく、Textボックスより入力された検索キーをDataViewのRowFilterにセットして、DataGridにバインドしました。
で、この状態を保持して、ソートや編集・削除を行いたいのです。
しかし、それぞれPostBackされるので、全レコードが表示されてしまいます。(当然なのですが)
これを保持するには、どうすればよいのでしょうか。
RowFilterをどっかにキャッシュして、バインドするたびにセットするとか、検索から生成されたDataViewのテーブルを別のテーブルに入れるとか、
妙なことを考えてみたのですが、どうにもならなくなったので、教えていただければと思います。
けい
常連さん
会議室デビュー日: 2001/09/12
投稿数: 48
投稿日時: 2003-01-14 19:29
PageクラスのSessionプロパティに
Session["rowFilterValue"] = rowFilterValue;
などとして保存しておき、
Load イベントの最後で再セットするという方法があると思います。

もしくは、SQL文を変更して最初からTextボックスに入力された検索キー
に絞り込んだものをデータセットに入れておくのもありかと。
(こちらの方が軽そうで個人的には好きですが)
はな
常連さん
会議室デビュー日: 2002/12/19
投稿数: 28
投稿日時: 2003-01-17 10:36
回答ありがとうございました。

ちょっと時間がなかったので、隠しTextBoxを作って検索キーを保存するという、とても強引な方法をとって済ませてしまいました。

やはりSessionプロパティが出てくるわけですね。
使うのを避けてたのですが、保存としてはベストかもしれません。
SQL文をいじるのは…すみません、SQL勉強不足でして、この道も探ってみます。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-01-17 11:25
>隠しTextBoxを作って

わざわざテキストボックスにしなくても、ビューステートに放り込んでおけば良いのでは?


参考
Control.ViewState
1

スキルアップ/キャリアアップ(JOB@IT)