[英]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.