2012-05-03 3 views
11

В моем проекте ASP.NET. У меня есть два раскрывающегося списка и флажок. Когда флажок установлен, выбранное значение DropDownList1 должно быть таким же, как и значение selcted DropDownList2. Но DropDownList1.SelectedValue не работает.Выпадающий список выбранное значение не работает

Вот мой код:

protected void chkSameBAddress_CheckedChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     if (this.chkSameBAddress.Checked == true) 
     { 

      this.txtcSAddress1.Text= this.txtcBAddress1.Text; 
      this.txtcSAddress2.Text = this.txtcBAddress2.Text; 
      this.txtcSAddress3.Text = this.txtcBAddress3.Text; 
      this.txtcSAddress4.Text = this.txtcBAddress4.Text; 
      this.txtcSCity.Text = this.txtcBCity.Text; 
      this.txtcSPostCode.Text = this.txtcBPostCode.Text; 
      this.txtcSState.Text = this.txtcBState.Text; 

      this.ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value).Selected = true; 


     } 

    } 
    catch (Exception ex) 
    { 
     logger.Error(ex.Message); 
     throw; 

    } 
} 

Как видно в приведенном выше примере, если chkSmaeBAddress проверяется затем выбранное значение ddlcSCountry должна быть такой же, как ddlcBCountry выбранного значения.

+0

ddlcSCountry.SelectedIndex = ddlcSCountry.Items.IndexOf (ddlcSCountry.Items.FindByValue (ddlcBCountry.SelectedItem.Value)) – Nalaka526

+0

Можете ли вы расширить ** Не работает ** (очевидно, так как вы писали), вы получаете ошибку? это выпадающее лицо? – V4Vendetta

+0

i dint получить любую ошибку. выпадающий список не получает ответа – user998405

ответ

18

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

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!Page.IsPostBack) 
    { 
     //Please check if you are binding checkbox controls here. 
     //If not bring them in here 
    } 
} 

Другое условие, что оба ddlcSCountry и ddlcBCountry hould имеют одинаковые значения, чтобы иметь возможность выбора. В противном случае ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value) будет пустым и будет вызывать ошибку при попытке установить свойство Selected

Если оба вышеуказанных условия в порядке, ваш код должен работать.

EDIT Извините, мой комментируемый код должен проверять привязку элементов управления выпадающего списка, а не флажок. поэтому она должна быть

//Please check if you are binding both dropdown list controls here. 
//If not bind them within the if (!Page.IsPostBack) 

Поместите контрольную точку в вашей if (this.chkSameBAddress.Checked == true) линии в CheckedChanged event и увидеть его выполнения, а затем во время выполнения значения ...

+0

Привет. Я связываю выпадающий список с использованием источника данных сущности – user998405

+0

Вы можете поместить точку останова, как я сказал выше, и проверить значения времени выполнения. В коде нет ничего плохого, но я подозреваю, что проблема заключается в том, как вы это сделали. У вас вообще не запущено событие 'chkSameBAddress_CheckedChanged'? – Kaf

+0

ya. Я пытаюсь поставить точку прерывания в chkSameBAddress_CheckedChanged. Событие CheckedChanged запущено – user998405

0

Попробуйте для выбора

ddlcSCountry.Text=ddlcBCountry.SelectedItem.Value; 

Он будет выбран пункт необходимо

+0

привет там нет ddlcSCountry.text. Это он ddlcSCountry.SelectedItem.text? – user998405

+0

с верхней буквы "Текст" – Likurg

+0

@ user998405 i make Редактировать – Likurg

0

Убедитесь, что chkSameBAddress.AutoPostBack установлена ​​истина. Если он установлен и по-прежнему не работает, рассмотрите возможность использования элемента управления UpdatePanel или перемещения этой логики клиенту с использованием JavaScript.

+0

ya. Я уже установил true – user998405

2

Неужели вы пытаетесь сделать выпадающие окна равными?

использование

ddlcSCountry.SelectedIndex = ddlcSCountry.FindStringExact(ddlcBCountry.Text); 

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

0

Убедитесь, что AutoPostBack установлен верно в свойствах DropDownList.

2

Принятое решение является очевидным решением наиболее распространенной причины, однако есть еще одна удивительная проблема, которая может вызвать это!

Значения моего списка были получены из базы данных, а значения имели возврат строки и возврат каретки из значений базы данных: \r\n. Эти ценности выглядят как невинное пространство, но на самом деле это не так!

Моим решением было удалить эти скрытые значения Char. Надеюсь, поможет.