1

HiddenFielda の値を設定してポストバックを強制するJavaScript があります。この JavaScript をたどることができ、正しく動作しているように見えます。ただし、ページの Load イベントからの値をテストすると、HiddenField設定されなくなりました。

Web を検索すると、値を失うことに関する多くの投稿が表示HiddenFieldされますが、どれも私と同じことをしているようには見えません。

これが私のJavaScript関数です(変更):

function EditItemItem(itemId) {
    document.getElementById('<%= EditItemId.ClientID %>').value = itemId;
    __doPostBack('<%= EditItemUpdatePanel.ClientID %>', '');
}

そして、これが私のマークアップの一部です(変更):

<div id="EditItemBox" runat="server">
    <asp:HiddenField runat="server" id="EditItemId" />
    <asp:UpdatePanel ID="EditItemUpdatePanel" runat="server"
        UpdateMode="Conditional">
        <ContentTemplate>
        <asp:Panel ID="EditItemPanel" runat="server"
            CssClass="ModalDialog" style="display:none;">
            <div>Edit an Item</div>
            <!-- ... -->
        </asp:Panel>
    </asp:UpdatePanel>
</div>

誰にもアイデアはありますか?

4

2 に答える 2

5

非表示フィールドから削除runat=serverしてから、フォームパラメータからアクセスすると簡単ですRequest.Form["EditItemId"]。その後、それは毎回動作します。

コードは次のようになります。

function EditItemItem(itemId) {
    document.getElementById('EditItemId').value = itemId;
    __doPostBack('<%= EditItemUpdatePanel.ClientID %>', '');
}

<div id="EditItemBox" runat="server">
    <input type="hidden" id="EditItemId" name="EditItemId" value="" />
    <asp:UpdatePanel ID="EditItemUpdatePanel" runat="server"
        UpdateMode="Conditional">
        <ContentTemplate>
        <asp:Panel ID="EditItemPanel" runat="server"
            CssClass="ModalDialog" style="display:none;">
            <div>Edit an Item</div>
            <!-- ... -->
        </asp:Panel>
    </asp:UpdatePanel>
</div>
于 2011-06-14T20:12:13.717 に答える
1

を介した AJAX ポストバックで値を期待している場合は、それを...UpdatePanel内に配置する必要があります。ContentTemplate

于 2011-06-14T19:48:52.500 に答える