ranio Ответов: 1

Как сохранить выпадающее выбранное значение во время обратной записи ASP.NET с помощью C#?


Я хочу сохранить выпадающее выбранное значение во время post back in asp.net с помощью c#. Я использую функцию javascript, с помощью которой я присваиваю значения из всплывающего окна. Я пытаюсь вызвать серверное событие, используя функцию __dopostback в javascript. Следовательно, я также не мог привязать выпадающий список к событию загрузки страницы (а не обратной передачи).

Что я уже пробовал:

Вызов события на стороне сервера из javascript выглядит следующим образом:
var dialogWindow = window.showModalDialog('ViewOIC.aspx?Bank=' + Bank + '&InstCode=' + InstCode, 'mywindow', 'dialogWidth:875px; dialogHeight:400px; center:yes; status = no; toolbar = no; menubar = no');
        if (dialogWindow != null) {
            
            document.getElementById('ctl00_cphDDS_txtOrgIdCode').value = dialogWindow.OriginatorIdentificationCode;
            document.getElementById('trOriginatorName').style.display = '';
            document.getElementById('trOriginatorName').style.visibility = 'visible';
            document.getElementById('ctl00_cphDDS_lblSelectedOriginator').innerHTML = dialogWindow.CompanyName;
            document.getElementById('ctl00_cphDDS_hidOrgName').value = dialogWindow.CompanyName;
            var OrgIdCode = document.getElementById('ctl00_cphDDS_txtOrgIdCode').value;
            
            //Added by Alex on 19.3.2020 for triggering Server Side Event Start
            __doPostBack('','');
            //Added by Alex on 19.3.2020 for triggering Server Side Event End
        }

Код для привязки выпадающего списка:
#region FetchPurposeCode_OIC
    private void FetchPurposeCode_OIC(string strOIC)
    {
        try
        {

            if (!string.IsNullOrEmpty(strOIC))
            {
                string OICType = strOIC.Substring(1, 2);
                DataSet ds = BLL_OUT_300.GetDDAPurposeCodeForOIC(OICType);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    ddlIssuedFor.DataSource = null;
                    ddlIssuedFor.DataBind();
                    ddlIssuedFor.DataSource = ds;
                    ddlIssuedFor.DataTextField = "DDAPurposeCodeDescription";
                    ddlIssuedFor.DataValueField = "DDAPurposeCode";
                    ddlIssuedFor.DataBind();
                }
                else
                {
                    DataSet dsPurposeCodes = Common.GetDDAPurposeCode(ddlBankType.SelectedValue);
                    if (dsPurposeCodes.Tables[0].Rows.Count > 0)
                    {
                        ddlIssuedFor.DataSource = null;
                        ddlIssuedFor.DataBind();
                        ddlIssuedFor.DataSource = dsPurposeCodes.Tables[0];
                        ddlIssuedFor.DataTextField = "DDAPurposeCodeDescription";
                        ddlIssuedFor.DataValueField = "DDAPurposeCode";
                        ddlIssuedFor.DataBind();
                    }

                }
                ddlIssuedFor.Items.Insert(0, new ListItem("---Select---", "0"));
                ddlIssuedFor.SelectedIndex = 0;
                //ViewState["DDAIssuedFor"] = "binded"; //Added to avoid rebinding cannot move to !ispostback as we are calling dopostback from javascript to invoke as reqd here
            }
            

        }
        catch (Exception ex)
        {
            throw ex;
        }


    }
    #endregion

1 Ответов

Рейтинг:
2

Member 12772472

Цитата:
Вы можете использовать для этой цели значение сеанса, используя это значение, вам нужно найти элемент из выпадающего списка

protected void Page_Load(object sender, EventArgs e)
{
        
        DataTable subjects = new DataTable();
        if (Page.IsPostBack == false)
        {
            using (SqlConnection con = new SqlConnection(constring))
            {

                SqlDataAdapter adapter = new SqlDataAdapter("SELECT name FROM Table", con);
                adapter.Fill(subjects);

                con.Open();


                DropDownList1.DataSource = subjects;
                DropDownList1.DataTextField = "name";
                DropDownList1.DataValueField = "name";
                DropDownList1.DataBind();


                if(!String.IsNullOrEmpty(Session["selectedval"] as string)) 
                {
                 DropDownList1.SelectedIndex =
                 DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue(Session["selectedval"].ToString()));
                }


                con.Close();

            }

  }


    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {

        string selectedval = DropDownList1.SelectedItem.Value;
        Session["selectedval"] = selectedval;
        Response.Redirect("default.aspx?val="+selectedval);
     }