2012-08-26 278 views
1

我填充另一個DDL一個DDL,我從另一個頁面更改下拉列表中選擇值

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      DropDownList1.DataSource = ProfileMasterDAL.bindcountry(); 
      DropDownList1.DataBind(); 
      DropDownList1.Items.Insert(0, "--Select country--"); 

     } 


     if(Session["uname"]!=null) 
     { 
       DropDownList1.SelectedValue = Session["country"].ToString(); 
      ProfileMasterBLL bll=new ProfileMasterBLL(); 
      foreach (var VARIABLE in ProfileMasterDAL.bindcountry()) 
      { 
       if (VARIABLE.ToString().Contains(DropDownList1.SelectedItem.Text)) 
       { 
        var query = (ProfileMasterDAL.GetStatesByCountrys(DropDownList1.SelectedItem.Text)); 
        DropDownList2.DataSource = query; 
        DropDownList2.DataBind(); 
       } 
      } 


      TextBox8.Text = Session["email"].ToString(); 
      string pwd = Session["pwd"].ToString(); 
      TextBox9.Attributes.Add("value",pwd); 
      TextBox10.Attributes.Add("value", pwd); 

     } 
    } 

所獲得的價值,但問題是,每當我改變DDL值固定爲會話值,因爲它是在page_load中,所以我如何將值更改爲在DDL中選定的項目。

+1

你可能想說「下拉列表」,而不是「DDL​​」。在閱讀你的問題之後,你的意思很清楚,但是我對你的問題*標題*的最初反應是你提到了數據定義語言。 –

回答

0

使用OnSelectedIndexChanged event以及將下拉列表中的AutoPostBack property設置爲true。

而在OnSelectedIndexChanged事件處理程序中,添加代碼以填充第二個下拉列表。

+0

我已經這樣做了,但dropdownlist.selected的值被分配給pageload中的會話值,所以即使我選擇了其他一些國家的會話值仍然存在。 –

0

如果理解了題正確,你想改變取決於DropDownList1的價值DropDownList2 的價值,下拉列表的初值來自另一個頁面

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      DropDownList1.DataSource = ProfileMasterDAL.bindcountry(); 
      DropDownList1.DataBind(); 
      DropDownList1.Items.Insert(0, "--Select country--"); 

      //get the selected country from another page 
      string selectedCountry = Convert.ToString(Session["country"]); 

      //set the selected value 
      DropDownList1.Items.FindByValue(selectedCountry).Selected = true; 

      //Bind Dropdonwlist2 
      BindDropDownList(DropDownList1.SelectedItem.Text); 

     } 

     /* 
     remaining code 
     */ 
    } 

綁定dropdonwList 2碼

/// <summary> 
    /// Bind dropdownlist2 
    /// </summary> 
    /// <param name="selectedCountry"></param> 
    protected void BindDropDownList(string selectedCountry) 
    { 
     ProfileMasterBLL bll = new ProfileMasterBLL(); 
     foreach (var VARIABLE in ProfileMasterDAL.bindcountry()) 
     { 
      if (VARIABLE.ToString().Contains(selectedCountry)) 
      { 
       var query = (ProfileMasterDAL.GetStatesByCountrys(selectedCountry)); 
       DropDownList2.DataSource = query; 
       DropDownList2.DataBind(); 
      } 
     } 

    } 

在dropdonwlist1的選擇指數的變化,現在的價值將改變

集自動回ŧ芸香對dropdownlist1

DropDownList1.AutoPostBack = true; 

    /// <summary> 
    /// DropDownList1 Selcted Index change 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     BindDropDownList(DropDownList1.SelectedItem.Text); 
    } 

希望這將解決問題烏爾

+0

當我這樣做時,我得到一個錯誤,如 不能有一個DropDownList中選擇多個項目。 –

+0

問題是即使我在ddl中選擇了一個新值,會話的值也沒有發生變化 –

+0

@Chandra sekhar 1.如果您面臨異常「無法選擇多個項目」,請先清除下拉菜單 \t DropDownList1 。清空選項(); 以編程方式設置任何新值之前 2.如果您希望更改seesion的值,則您必須在事件中執行DropDownList1_SelectedIndexChanged Session [「country」] = DropDownList1.SelectedValue; – Prateek

相關問題