2012-02-09 6 views
0

В моем веб-приложении у меня есть раскрывающийся список и текстовое поле. Я хочу отключить текстовое поле для определенных значений в выпадающем списке. Я написал код для события selectedIndexChanged в раскрывающемся списке. Я сделал свойство AutoPostBack в раскрывающемся списке true.Свойство SelectedIndex выпадающего списка

Но когда я запускаю приложение и выбираю значение из раскрывающегося списка, оно неожиданно меняет первоначальное значение. Поэтому все время я получаю значение 0 для SelectedIndex. Что я могу сделать для этого?

+0

код на примере необходимо .. –

ответ

0

Если вы выйдете из выпадающего списка в событии onPageLoad, вы должны проверить, является ли он обратной передачей, и если это так, не начинайте его снова.

protected void OnLoad(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     // init dropdownlist here 
    } 
} 
+0

Я предлагаю вам сделать это правило для себя: каждый раз, когда вы динамически создаете или иным образом инициализируете (Например, заполнить, установить его свойства) серверный элемент управления, сделайте все возможное, чтобы сделать это в событии OnInit, и делайте это ВСЕГДА (независимо от состояния обратной передачи). Цель события OnLoad - предоставить кодеру способ управления уже загруженными элементами управления, где эта загрузка должна произойти в OnInit - просто сказано. –

0

Что вы делаете с помощью обратной передачи, чтобы достичь этого, является чрезмерным и медленным. Вы должны использовать client-script (javascript), чтобы отключить текстовое поле, когда в этом выпадающем списке выбраны определенные параметры. В зависимости от того, используете ли вы обычные js или jquery или что-то еще, эта реализация будет отличаться.

0

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

Если вы хотите сделать что-то еще, добавив это свойство, укажите дополнительные сведения, чтобы мы могли дать вам лучший ответ в соответствии с вашим требованием.

Чтобы сделать его отключить на стороне клиента, вы можете следовать код ниже:

HTML:

<select name="ddlSample" id="ddlSample"> 
    <option value="1">Enable text box</option> 
    <option value="2">Disable text box</option> 
</select> 
<br /> 
<input name="txtCode" type="text" id="txtCode" /> 

JQuery:

$("#ddlSample").change(function(){ 
    if($(this[this.selectedIndex]).val()=="1") 
    { 
     $("#txtCode").attr("disabled",false); 
     $("#txtCode").focus();  
    }  
    else 
    { 
     $("#txtCode").attr("disabled",true); 
    }  
}); 
Смежные вопросы