ASP.NET / C # - как открыть страницу со списком / несколькими элементами управления и отправить выбранные идентификаторы обратно на родительскую страницу - PullRequest
0 голосов
/ 24 августа 2010

Я хочу создать всплывающую страницу, содержащую элемент управления типа списка (множественный выбор), который будет возвращать выбранные идентификаторы на страницу, которая инициировала всплывающее окно.

Это ASP.NETвеб-приложение / C # 3.5 / Latest jQuery.

Я понимаю, как создать всплывающую страницу с соответствующими элементами управления, но я не уверен в том, как лучше всего отправить массив идентификаторов элементов обратно родителюстр.

Есть ли способ, с помощью которого я могу использовать JSON или какую-либо другую технологию, чтобы вернуть эти идентификаторы элементов на родительскую страницу?На данный момент я знаком только с использованием переменных сеанса / строк запросов / обращений к веб-сервисам для передачи элементов со страницы на страницу.

Скорее всего, одномерный массив будет либо целым числом, либо строкой, но на всплывающей странице может быть выбрано более 40 элементов.

Необходимы только высокоуровневые концепции.Я могу исследовать точную реализацию, когда узнаю, что ищу.

Большое вам спасибо!

Ответы [ 4 ]

1 голос
/ 27 августа 2011
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 = "";
}
1 голос
/ 24 августа 2010

Я сделал то, что вы написали около 1 месяца назад. Способ, который я выбрал, основан на использовании JavaScript без JSON, но вы можете сделать это. Вот код, который поможет вам 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 родительской оконной функции

1 голос
/ 24 августа 2010

Вариация ответа DanTheMan:

function returnSelected(form) {
    if (window.opener && !window.opener.closed) {
        $('#selectList :selected').each(function(i, selected) {
            window.opener.$("#list")
                .append('<li>' + $(selected).text() + '</li>');
        });
    }
}
1 голос
/ 24 августа 2010

Вы можете использовать диалоговое окно jQuery UI и сохранить список на странице. Затем вы получите доступ к выбранным значениям так же, как если бы они были элементом управления на странице. Единственное, что нужно иметь в виду, это то, что после того, как вы создали диалоговое окно, вам нужно будет добавить его обратно как дочерний элемент формы. ( Смотрите это сообщение )

Это добавляется, если пользователи редко используют эту функцию всплывающих окон, но это намного чище с точки зрения разработки и сопровождения. Кроме того, это всего один или два дополнительных элемента управления и 10-20 строк JavaScript.

Я часами прослеживал сеть всплывающих окон, передающих javascript между элементами управления, страницами и родительскими страницами (iframes, тьфу), и это намного проще, когда вы просто скрываете / отображаете div на той же странице.

...