0

新しい荷送人をデータベースに追加できるポップアップウィンドウを開くために使用しているjQueryがいくつかあります。元のウィンドウには、現在のすべての荷送人のドロップダウンリストがあります。ポップアップウィンドウに新しい荷送人を追加すると、そのウィンドウが閉じ、元のウィンドウがドロップダウンリストのデータを再読み込みして、作成したばかりのデータを選択します。

それはすべて完璧に機能します。私の問題は、フォームの残りの部分に入力して送信すると、選択したアイテムの値の代わりに空の文字列が渡されることです。これはASP.Netスクリプトだからですか?ASP.Netについてはよくわかりませんが、PHPでこの問題が発生したことはありません。ページ全体を更新せずにドロップダウンリストを更新し、フォームの送信時にリストにその値を渡す方法を誰かが説明できますか?

ポップアップを開いてリストをリロードするページのJavaScriptコードは次のとおりです。

function openConsignorAdd() {
    var url;
    url = "/admin/consignor/csAdd.aspx";
    window.open(url, "WizardWindow", "width=400,height=500,resizable=yes,scrollbars=yes");
}

function loadNewAdded(fn, cs_txt_id) {
    //    var pagePath = window.location.pathname;
    var pagePath = "/admin/getNewList.asp";
    var paramList = "data=";

    //Call the page method
    $.ajax({
        type: "POST",
        url: pagePath + "?type=" + fn + "&cs_txt_id=" + cs_txt_id,
        data: paramList,
        success: function (data) {
            //create jquery object from the response html
            var $response = $(data);
            //query the jq object for the values
            var results = $response.filter('select#results').html();

            if (fn == "consignor") {
                $("select#<%=itemConsigner.ClientID%>").html(results);
            } else if (fn == "cdr") {
                $("select#<%=itemCDR.ClientID%>").html(results);
            }
        },
        error: function () {
            alert("Failed To Refresh!\n\nYou must manually refresh the page.");
        }
    });
}

リストを更新するためのポップアップページのJavaScriptコードは次のとおりです。

function refreshOpener(cs_txt_id) {
    window.opener.loadNewAdded("consignor", cs_txt_id);
}

それらは両方とも機能します。ドロップダウンリストの値を取得するには、次を使用します。

if (itemConsigner.SelectedValue.ToString() != string.Empty)
{
    itemCsTxtId = itemConsigner.SelectedValue.ToString();
}

ドロップダウンリストは次のとおりです。

<asp:DropDownList ID="itemConsigner" runat="server" TabIndex="1"></asp:DropDownList>

さらに情報が必要な場合は、お知らせください。どんな助けでも大歓迎です。

4

2 に答える 2

1

問題は、ページの読み込み後に変更を加えているため、サーバーが新しい追加を元のオプションの1つとして認識せず、完全に無視することであるようです。これは、人々があなたのフォームを編集することができないようにするために良いと思います。だから私がしたのは、の値を取得する代わりに、長いIDでitemConsigner.SelectedValueの値を取得することでした。Request.Form["itemConsigner"]そうすれば、提出したオプションが元のオプションであったことを検証しません。

于 2012-10-31T13:25:47.217 に答える
0

ばかげた観察かもしれませんが、すべてのコードがなければ、これが当てはまるかどうかはわかりません。選択オプションのIDで元のリストを更新しているだけですか。それぞれの値も入力する必要があります。これが、フォームの送信後に空の値を取得している理由である可能性があります。

于 2012-05-10T18:16:55.257 に答える