2011-06-09 50 views
3

在我的ASP.NET 4.0的网站,它使用母版页,我已禁用ViewState的站点范围在web.config中:与第一下拉列表项选择视图状态问题

<pages enableViewState="false" /> 

,我试图只启用它的时候绝对必要。

我碰到的一个问题与DropDownList控件(不绑定怎么回事,只是硬编码项):

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" onselectedindexchanged="DropDownList1_SelectedIndexChanged" Width="150px" ViewStateMode="Enabled" EnableViewState="True"> 
     <asp:ListItem>Chocolate</asp:ListItem> 
     <asp:ListItem>Strawberry</asp:ListItem> 
     <asp:ListItem>Vanilla</asp:ListItem> 
    </asp:DropDownList> 

即使我已经启用视图状态这个特殊的控制,还有一个问题选择第一项:

enter image description here

protected void DropDownList1_SelectedIndexChanged (object sender, EventArgs e) 
    { 
     TextBox1.Text = (sender as DropDownList).SelectedValue; 
    } 

预期的结果是,无论何时“巧克力”被选择TextBox1的将显示 “巧克力”。但是我看到的是TextBox1只在草莓或香草被选中时才会改变。在上面的例子中,我选择了草莓和巧克力。

换句话说,DropDownList SelectedIndexChanged在选择第一个项目时不会触发,而在选择第二个或第三个项目时触发。

这里是为DropDownList的属性设置:

enter image description here

我试图从一个空白的项目开始相同的代码和页面按预期工作。 (选择第一个项目会触发事件)。

在此先感谢您的任何建议。

+0

所以如果你选择第二个项目。该事件被解雇。如果您然后选择第一个项目,事件不会被解雇? – Phill 2011-06-09 02:01:30

+0

@Phil:是的,SelectedIndexChanged事件在选择第二或第三项时触发。但在此之后,选择第一个项目不会导致事件触发。 – 2011-06-09 02:21:24

回答

1

看样子你不能设置<pages enableViewState="false" />在web.config或任何页面指示为ViewStateMode属性生效。

基本上EnableViewState=false将覆盖任何和所有ViewStateMode设置。

似乎没有要在此点设置在web.config中ViewStateMode属性,因此它看起来你必须删除从您的应用程序的任何EnableViewState性能和在ViewStateMode属性设置为Disabled方式所有的页面指令。

0

我猜我已经知道你在说什么了。您希望在页面加载时从下拉列表中显示默认值。如果你想这样你可以这样做,当下拉列表加载。

protected void DropDownList1_Load(object sender, EventArgs e) 
    { 
     TextBox1.Text = (sender as DropDownList).Text; 
    } 
+0

对不起。我搞砸了。你不想这样做。我没有重现它。 – Justin 2011-06-09 02:26:54

相关问题