[英]ASP.NET / C# - How to pop up a page with a listbox / multi-select control and send the selected IDs back to the parent page
我想制作一个包含列表框类型(多选)控件的弹出页面,该控件会将选定的ID返回到启动弹出窗口的页面。
这是一个ASP.NET Web应用程序/ C#3.5 /最新的jQuery。
我知道如何使用相应的控件制作弹出页面,但是我不确定将项目ID数组发送回父页面的最佳方法。
有没有一种方法可以利用JSON或其他技术将这些项目ID返回到父页面? 目前,我只熟悉使用会话变量/查询字符串/对Web服务的调用来逐页传递项目。
一维数组很可能是整数或字符串,但是可能会从弹出页面中选择40多个项目。
仅需要高级概念。 一旦知道要查找的内容,便可以研究确切的实现。
非常感谢!
您可以使用jQuery UI的对话框,并将列表框保留在页面上。 然后,您将以与选择值相同的方式访问它们,就像它们是页面上的控件一样。 唯一要记住的是,一旦创建了对话框,就必须将其重新添加为表单的子级。 ( 请参阅这篇文章 )
如果用户很少使用此弹出功能,则会增加开销,但是从开发和维护的角度来看,它要干净得多。 此外,它只是一两个额外的控件和10到20行的javascript。
我已经花费了数小时来追踪弹出窗口的网络,以在控件,页面和父页面(iframe,ugh)之间传递javascript,而当您在同一页面上隐藏/显示div时,这要容易得多。
我做了大约1个月前您写的内容。 我基于不使用json的javascript选择的方式,但是您可以做到。 这是一些代码,可以帮助您Popup.ascx
`
function SubmitChangnes(id) {
if (window.opener && !window.opener.closed)
{
var value = document.getElementById("hiddenid").value;
window.close();
window.opener.addPerson(document.getElementById("hiddenid").value, document.getElementById("TextBox2").value);
}
}
`
当您在“弹出”页面上按“提交”按钮时,它将调用SubmitChanges,它关闭弹出窗口并在父窗口中调用函数。 您可以将json对象发送到父窗口函数
DanTheMan答案的变化:
function returnSelected(form) {
if (window.opener && !window.opener.closed) {
$('#selectList :selected').each(function(i, selected) {
window.opener.$("#list")
.append('<li>' + $(selected).text() + '</li>');
});
}
}
private void Get_Terms_And_Delivery()
{
if (txtHidden_Terms_And_delivery1.Value != "")
{
string strHidden_Terms_And_Delivery_Id = "";
if (ViewState["intTerms_Of_Delivery_Id"] != null)
{
strHidden_Terms_And_Delivery_Id = ViewState["intTerms_Of_Delivery_Id"].ToString();
}
if (strHidden_Terms_And_Delivery_Id != txtHidden_Terms_And_delivery1.Value)
{
ViewState["intTerms_Of_Delivery_Id"] = Convert.ToInt32(txtHidden_Terms_And_delivery1.Value);
Parameterised_SQL_Dentry pm = new Parameterised_SQL_Dentry(1, CommonStrings.ConnectionString);
string str_Select = "select vcrTerm_1,vcrTerm_2,vcrTerm_3,vcrTerm_4,vcrTerm_5,vcrTerm_6 from exp_mst_Terms_Of_Delivery where intTerms_Of_Delivery_Id=@intTerms_Of_Delivery_Id";
pm.Parameters.Add("@intTerms_Of_Delivery_Id", SqlDbType.Int, txtHidden_Terms_And_delivery1.Value);
DataTable dt = new DataTable();
dt = pm.GetDataTable(str_Select);
if (dt.Rows.Count > 0)
{
txtPacking_List_Notify_Terms1.Text = dt.Rows[0]["vcrTerm_1"].ToString();
txtPacking_List_Notify_Terms2.Text = dt.Rows[0]["vcrTerm_2"].ToString();
txtPacking_List_Notify_Terms3.Text = dt.Rows[0]["vcrTerm_3"].ToString();
txtPacking_List_Notify_Terms4.Text = dt.Rows[0]["vcrTerm_4"].ToString();
txtPacking_List_Notify_Terms5.Text = dt.Rows[0]["vcrTerm_5"].ToString();
txtPacking_List_Notify_Terms6.Text = dt.Rows[0]["vcrTerm_6"].ToString();
}
}
}
txtHidden_Terms_And_delivery1.Value = "";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.