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

似乎问题在于,由于我在页面加载后进行更改,服务器没有将我的新添加视为原始选项之一,因此完全忽略了它。这很好,所以我猜人们不能只编辑您的表单。所以我所做的不是获取 的值,而是使用长 IDitemConsigner.SelectedValue获取值。Request.Form["itemConsigner"]这样它就不会验证我提交的选项是原始选项。

于 2012-10-31T13:25:47.217 回答
0

可能是一个愚蠢的观察,但没有所有代码,我不确定是否是这种情况。您是否只是使用选择选项中的 id 更新原始列表。还需要为每个填充值。这可能就是为什么您在提交表单后得到一个空值的原因。

于 2012-05-10T18:16:55.257 回答