2011-06-09 109 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

相關問題