簡體   English   中英

ASP.NET / C#-如何彈出帶有列表框/多選控件的頁面並將選定的ID發送回父頁面

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM