ASP.Net下拉列表在使用ajax更新时未传递值

时间:2012-05-10 15:38:27

标签: asp.net ajax

我有一些jQuery,我用它来打开一个弹出窗口,可以将新的发货人添加到数据库中。原始窗口有一个所有当前发货人的下拉列表。当您在弹出窗口中添加新发货人时,该窗口将关闭,然后原始窗口将重新加载下拉列表的数据并选择刚刚创建的数据。

所有这一切都很完美。我的问题是,当您填写表单的其余部分并提交它时,它会传递一个空字符串而不是所选项目的值。这是因为它是一个ASP.Net脚本吗?我对ASP.Net不是很了解,但我从未遇到过这个问题。有人可以解释一下如何在不刷新整个页面的情况下刷新下拉列表,并且仍然可以获得列表以在表单提交时传递它的值吗?

我打开弹出窗口并重新加载列表的页面上的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>

如果您需要更多信息,请告诉我们。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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