1

これは私の問題の明確な説明にはなりませんが、それをよりよく説明する方法がわかりません。

PreInitで動的に作成するグリッドビューがあります。このグリッドビューには、各行に動的に追加されたテキストボックスがあります。

ボタンを押すたびに、グリッドビューセル内をループして、テキストボックスのテキストを取得し、データベースを更新します。

グリッドビューが初めて作成されるとき、行のuniqueIDは次のようになります:ctl03、ctl04、ctl05、ctl06(したがって、テキストボックスIDはctl03 $ txt0などです)。

初めてボタンを押したとき、行のUniqueIDは同じままなので、FindControl(ID)メソッド、またはRequest.Form[txt.UniqueID]を使用してコントロールを見つけることができます。

でも; 初めてボタンを押すと、ClientIdの行が次のように作成されます:ctl02、ctl03、ctl04、ctl05 ..そのため、テキストボックスが見つからず、テキストボックスに書き込まれたテキストをキャッチできません。

レンダリングされたHTMLコードを見ると、rowClientIDは最初に作成されたもの(ctl03、ctl04、ctl05、ctl06)と同じであることがわかります。

最初の更新後にrowID(コンテナIDの命名)が変更される理由を誰かが知っていますか?

前もって感謝します。

4

1 に答える 1

0

1つの解決策は、静的IDを使用してテキストボックスを作成し、asp.netで動的に作成しないようにすることです。これは、asp.netver4を使用している場合に実行できます。

他の解決策は、単純なものをレンダリングすることです<input name="KnowName01" id="KnowId01" type="text" value="your value here" maxlength="100" etc... >

その後、ポストバックで、古い方法でリターンをキャプチャし、値を取得します。

Request.Form["KnowName01"]

最後に、TextBoxは入力のレンダリングにすぎず、それに加えて、Anti-XSSセーフを含む何が書き込まれるかについてのチェックがいくつかあります。

于 2011-06-27T15:30:19.783 に答える