none
ASP.net上でデータベースを更新すると、JavaScriptで編集した内容が消える RRS feed

  • 質問

  • 趣味的にプログラミングをしている者です。VBはversion2から使っているのですが、Webアプリケーションの開発は初めてです。

    ASP.netでWebアプリケーションを作っているのですが、レスポンスや操作性を高めるため、一部にJavaScriptを使ってListBoxの内容を追加などしています。 このListBoxとは別のListBoxはデータベースに連結されていて、データベースの抽出条件を変えてデータを更新すると、JavaScriptで内容を追加したListBoxがクリアされてしまいます。

    コードビハインドで処理しなければ、消えてしまうのでしょうか? (JavaScriptで編集した内容はポストバックされない?)

    基本的な事なのかもしれませんが、本やWebを読みあさってもよくわかりません。ご教授いただければ幸いです。よろしくお願いします。

    2011年2月22日 3:12

回答

  • ポストバック時に以前の内容が再現されるのはViewSateの仕組みによります。JavaScriptで追加した場合はViewStateとして存在しませんから、ポストバックすれば消えてしまいます。ポストバック時に、コードビハインドに渡ってきたListBoxの内容を再セットすれば良いと思います。このようにするとViewStateが作成されますが、どのみち使わないのであればEnableViewStateをfalseにしてしまいましょう。こうするとViewStateが作成されなくなります。
    以上を考慮して、本当にJavaScriptによる追加が良いのか再考されると良いと思います。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年2月28日 9:13
    2011年2月22日 4:16
    モデレータ

すべての返信

  • ポストバック時に以前の内容が再現されるのはViewSateの仕組みによります。JavaScriptで追加した場合はViewStateとして存在しませんから、ポストバックすれば消えてしまいます。ポストバック時に、コードビハインドに渡ってきたListBoxの内容を再セットすれば良いと思います。このようにするとViewStateが作成されますが、どのみち使わないのであればEnableViewStateをfalseにしてしまいましょう。こうするとViewStateが作成されなくなります。
    以上を考慮して、本当にJavaScriptによる追加が良いのか再考されると良いと思います。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年2月28日 9:13
    2011年2月22日 4:16
    モデレータ
  • 早速アドバイスをいただき、ありがとうございました。

    やはりコードビハインドで処理した方が良いのですね。 実のところ、データベースに連結しているListBoxというのはAccessDataSourceを使っているので、ほとんどプログラムをしていないのです。 アドバイスの通りにポストバック時の処理を加えて消えないようにしてみたいと思います。

    サーバーが良いものではないので、レスポンスを考えてJavaScriptを採用していたのですが、両方のパターンを作って判断したいと思います。

    ありがとうございました。

    2011年2月22日 9:21