0

システムにログインしているユーザーに応じて、2 つのストアド プロシージャのうちの 1 つを使用できるように、GridView の SQLDataSource を動的に選択する必要があるアプリがあります。

私の問題は、ボタンクリックでこのようなロジックを使用していることです...

If Session("SiteType") = "Type1" Then
     GridView1.DataSourceID = "SqlDataSource2"
Else
     GridView1.DataSourceID = "SqlDataSource1"
End If
GridView1.DataBind()

これは、グリッドビューを含むパネルを表示するボタンをクリックすると発生します。

次に、ユーザーは変更を行い (基本的には、グリッドの 1 つまたは複数のラインでテキスト ボックスを調整します)、[保存] をクリックします。ただし、これが発生すると、グリッドビューはその DataSourceID を認識しなくなるため、グリッドビューの行を調べようとすると、何もありません。

保存ボタンをクリックして同じコードを入力すると、(もちろん) フォームで行ったデータの変更がすべて無効になります。

簡単に言えば、プログラムがグリッドビューに関連付けられた SqlDataSourceID をサイクルの終わりまで保持するように、SqlDataSource を動的に選択するにはどうすればよいでしょうか。これはViewStateのことですか?ViewState がよくわかりません...

私の無知を許してください - これはちょっと単純だと思いますが、.NET の経験があまりありません。より良い方法があれば、私もそれを聞きたいと思います - とはいえ、時間は本質的なものなので、今すぐ簡単な修正を探しています (ボスが私の首を呼吸しています.. ふふ) .

ありがとう!

4

3 に答える 3

1

実行時にコードでデータソースを設定しているため、ポストバックごとにグリッドを再バインドする必要があります。

これをページ読み込みイベント ハンドラに追加します。

If Page.IsPostback Then
    If Session("SiteType") = "Type1" Then
       GridView1.DataSourceID = "SqlDataSource2"
    Else
       GridView1.DataSourceID = "SqlDataSource1"
    End If
    GridView1.DataBind()
End If
于 2009-11-11T20:28:04.813 に答える
0

オプションを Cookie に入れるだけでこれを実行し、必要なときに再度そのオプションを Cookie から取得しました。

通常、Cookie、Session、および ViewState はすべて同じように機能します。これらは、限られた時間だけ情報を永続化する簡単な方法です。キーを作成し、値を追加してから、Cookie、セッション、ビューステートなど、使用するメディアにキーを保存します。値が再び必要になった場合は、永続的なメディアからキーを見つけて、キーと値のペアをロードし、通常は何らかのタイプの変数に戻すことで値にアクセスします。

頑張ってください。これが役立つことを願っています。

于 2009-11-11T20:21:31.017 に答える
0

私はただ行き、それをセッション変数として保存します。元。Session("データソース") = myDataSource

次に、GridView のデータソースを次のように設定します。 MyGridView.datasource = session("datasource") MyGridView.bind()

それはそれを行う必要があります。

これが役立つことを願っています」デイビッド。

于 2009-11-12T05:45:59.270 に答える