在我的Web應用程序中,我有一個下拉列表和一個文本框。我想在下拉列表中禁用某些值的文本框。我編寫了下拉列表中selectedIndexChanged事件的代碼。我使下拉列表的AutoPostBack屬性爲true。下拉列表中的SelectedIndex屬性
但是當我運行應用程序並從下拉列表中選擇一個值時,它突然變爲初始值。因此,我一直得到SelectedIndex的值0。我能爲此做些什麼?
在我的Web應用程序中,我有一個下拉列表和一個文本框。我想在下拉列表中禁用某些值的文本框。我編寫了下拉列表中selectedIndexChanged事件的代碼。我使下拉列表的AutoPostBack屬性爲true。下拉列表中的SelectedIndex屬性
但是當我運行應用程序並從下拉列表中選擇一個值時,它突然變爲初始值。因此,我一直得到SelectedIndex的值0。我能爲此做些什麼?
如果你在onPageLoad事件中的初始下拉列表,你必須檢查它是否是回發,如果是的話,不要再次初始化它。
protected void OnLoad(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
// init dropdownlist here
}
}
我建議你對自己做一個規則:每次你動態地創建或者初始化(例如填充,設置其屬性)服務器控件,盡最大努力在OnInit事件中執行此操作,並始終執行此操作(無論回髮狀態如何)。 OnLoad事件的目的是爲編碼人員提供一種操作已經加載的控件的方法,在OnInit中加載應該發生 - 簡單地說。 – 2012-02-09 11:21:54
你在做什麼回傳來實現這是一個矯枉過正和緩慢。在該下拉列表中選擇某些選項時,應該使用客戶端腳本(javascript)來禁用文本框。取決於你是否使用普通的js或jquery或其他東西,這個實現會有所不同。
你可以非常容易地禁用文本框客戶端,所以你爲什麼添加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);
}
});
通過代碼示例所需.. – 2012-02-09 11:20:12