2012-02-09 121 views
0

在我的Web應用程序中,我有一個下拉列表和一個文本框。我想在下拉列表中禁用某些值的文本框。我編寫了下拉列表中selectedIndexChanged事件的代碼。我使下拉列表的AutoPostBack屬性爲true。下拉列表中的SelectedIndex屬性

但是當我運行應用程序並從下拉列表中選擇一個值時,它突然變爲初始值。因此,我一直得到SelectedIndex的值0。我能爲此做些什麼?

+0

通過代碼示例所需.. – 2012-02-09 11:20:12

回答

0

如果你在onPageLoad事件中的初始下拉列表,你必須檢查它是否是回發,如果是的話,不要再次初始化它。

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

我建議你對自己做一個規則:每次你動態地創建或者初始化(例如填充,設置其屬性)服務器控件,盡最大努力在OnInit事件中執行此操作,並始終執行此操作(無論回髮狀態如何)。 OnLoad事件的目的是爲編碼人員提供一種操作已經加載的控件的方法,在OnInit中加載應該發生 - 簡單地說。 – 2012-02-09 11:21:54

0

你在做什麼回傳來實現這是一個矯枉過正和緩慢。在該下拉列表中選擇某些選項時,應該使用客戶端腳本(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); 
    }  
});