1

タイマーの Tick イベントに基づいて ASP.NET UpdatePanel をトリガーしてリフレッシュします。

ページはカスタム XML ファイルを解析し、その場で UserControls (GridViews を含む) を挿入します。これはPage_Loadメソッドから実行されます。

if(!Page.IsPostBack)
  parseXmlFile();

ページが初めて読み込まれると、すべてのコントロールが期待どおりに表示されます。問題は、タイマー イベントが初めて発生したときにTick、すべての UserControls が消えることです。

イベントでは、SqlDataSource を介してデータを GridView に再バインドTickするカスタム メソッドを呼び出します。RefreshData()

   public void RefreshData() {
       GridView1.DataBind();
   ...

ASP.NET で AJAX がどのように機能するかを理解していない可能性があります。

XML ファイルを一度だけ解析したい (これにより、ページ内のすべての UserControls が作成されます)。この時点から、GridView に含まれるデータを更新し、GridView の可視性状態を変更したいだけです。

4

1 に答える 1

1

この点は、あなたが注目しなければならない点です。

if(!PostBack)
  parseXmlFile();

コントロールは最初に作成するだけなので、Tick が発生したときにコントロールがポストバックされても、コントロールは再び表示されません。

そのための2つのソリューション。
1. XmlFile を再度解析するには
2. すべてのコントロールをビューステートに保存するため、ポストバックでコントロールがビューステートから再作成されます。

私はxmlfileを保持し、最初とまったく同じように再作成することを好みます。

コントロールがページのデータ側のどこにも記述されておらず、html 部分にレンダリングされているため、なぜコントロールが再び存在しないのか疑問に思っている場合、html 部分はコードビハインドから不明であり、データとポストのみです。ビュー ステートのようなデータは、コード ビハインドによって認識できます。したがって、ポストバック時にコードビハインドはページを再度レンダリングする必要がありますが、このコントロールはコードビハインドに対して再び不明になり、それらを再作成する必要があります。最初にそれらを作成したのと同じ関数によってエーテルを取得し、保存されたものを取得することによってそれらを再作成する必要がありますビューステート。

于 2012-06-06T12:24:19.913 に答える