4

フォームを保存およびリセットするための<asp:UpdatePanel>と2つのコントロールを備えたフォームがあります。<asp:button>私は<asp:UpdatePanel>javascript関数を使用してトリガーし、パネルをリセットする必要がある場合に__doPostBack()値を渡します。__EVENTARGUMENT

私の分離コードは、PreRenderで値をチェックします

Request.Params.Get("__EVENTARGUMENT")

元のデータでフォームをリセットするかどうかを決定します。

パネルが以前にリセットされ__EVENTARGUMENTた場合、保存ボタンが押されたときに長引くように見えるため、ポストバック時にフォームを再度リセットします。

私は使用してクリアしようとし__EVENTARGUMENTましたPage_Load

Request.Params.Clear();

Request.Params.Set("__EVENTARGUMENT", "");

ただし、コレクションは読み取り専用です。javascriptを使用して、別の投稿で見つけました:

window.document.getElementById('__EVENTARGUMENT').value = '';

しかし、これもうまくいかないようです。何か案は?

4

1 に答える 1

5

これを理解しただけです。

ソリューション

次の__EVENTARGUMENT方法で簡単にクリアできます。

theForm.__EVENTARGUMENT.value = '';

<asp:UpdatePanel>が読み込まれるたびにこのアクションを実行する必要がある場合は、UpdatePanel内に次を配置します。

<script type="text/javascript">
    Sys.Application.add_load(function () {
        theForm.__EVENTARGUMENT.value = '';
    });
</script>

 


理由:

.Net コントロールの大部分は、javascript__doPostBack関数を使用してポストバックを処理するため、生成時に次のコードがページに自動的に追加されます。

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form'];
if (!theForm) {
    theForm = document.form;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
    theForm.__EVENTTARGET.value = eventTarget;
    theForm.__EVENTARGUMENT.value = eventArgument;
    theForm.submit();
    }
}
//]]>
</script>

これは の値が設定される場所であり__EVENTARGUMENT、コードビハインドから参照されるものです。

于 2012-08-16T12:45:24.570 に答える