0

わかりました、これはかなり進んでいますが、優れた ASP スキルを持つ誰かの助けが必要です。コード ビハインドを使用して、ASP テーブルに SQL クエリの結果を入力しています。読み取り専用の値は.text一部のテーブル セルに格納され、読み書き可能な値は.textテキスト ボックス コントロールに格納されます (動的に作成され、テーブル セルに追加されます)。

これは、最初のロードで正常に機能します。ページが別のクエリでリロードされると (たとえば、ユーザーが別の列を選択して並べ替えた場合)、テーブル セルの値は正しく再入力されますが、テキスト ボックスの値は変更されません。クエリの前に a を投げても、table.rows.clear()これは修正されないようです。

より詳しい情報:

  • textbox.textを使用してすべての値を消去するメソッドを作成しましたtable.findcontrol()。ボタンに関連付けられている場合、このメソッドは仕様どおりに機能します (これは、findcontrol がテキスト ボックスを検索/更新できることを示します)。ページロードに配置された場合、メソッドは何もしません (テキストボックスは以前の値を保持します)。デバッグモードでは、findcontrol はボタンで使用されると値を取得しますが、ページロードに追加されると null になります。私はこれをtable.rows.clear()コメント付きとコメントなしで行いました。
  • また、すべてのコードを に投げ込もうとしましたoninit。これは、大きな違いはないようです。
4

2 に答える 2

2

動的コントロールは、各ページリクエストで、できればInitイベント中に追加する必要があります。時間通りにそれらを再現していないようです。

すべての単一ページリクエストにそれらを追加すると、ページライフサイクルの一部として、それらはから値を受け取ります。viewstate

于 2013-01-14T22:29:53.677 に答える
0

動的コントロールが値を保持するには、次のことを行う必要があります。

a.) ページで Viewstate が有効になっていることを確認します。b.) ページが読み込まれるたびにコントロールを再作成し、最初にコントロールに与えられた ID と同じ ID でコントロールを作成するようにします。また、ビューステートが読み込まれる前にこれを行う必要があります (できれば Onit または PreInit メソッドで行います。ページのライフ サイクルを参照してください: http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100 %29.aspx

于 2013-01-14T22:32:55.787 に答える