在我的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