我有一些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>
如果您需要更多信息,请告诉我们。任何帮助表示赞赏。
答案 0 :(得分:1)
似乎问题在于,由于我在页面加载后进行更改,因此服务器不会将我的新添加视为原始选项之一,因此完全忽略它。这很好,所以人们不能只编辑你的表格我猜。所以我所做的不是获取itemConsigner.SelectedValue
的值,而是使用长ID获取Request.Form["itemConsigner"]
的值。这样它就不会验证我提交的选项是原始选项。
答案 1 :(得分:0)
可能是一个愚蠢的观察,但没有所有代码,我不确定是否是这种情况。您是否只是使用选择选项中的ID更新原始列表。还需要为每个值填充该值。这可能是您在表单提交后获得空值的原因。