2013-07-15 93 views
0

簡單地說,我在頁面上的UpdatePanel中有一個RequiredFieldValidatior的下拉列表, 我已經爲下拉列表啓用了autopostback。Dropdownlist selectedindexchanged event is not firing

問題是Dropdownlist selectedindex事件沒有觸發。 當我驗證頁面和螞蟻錯誤發生時,會發生這種意外行爲。

我搜索了很多,但無法找到解決方案

我的代碼如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 
     function ValidateMe() { 
      if (Page_ClientValidate("vgOption")) { 
       alert("valid"); 
      } 

      return false; 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="smMain" runat="server"> 
    </asp:ScriptManager> 
    <asp:UpdatePanel ID="pnlMain" runat="server" ChildrenAsTriggers="true"> 
     <ContentTemplate> 
      <table border="1" cellpadding="5" cellspacing="0"> 
       <tr> 
        <td> 
         Option: 
        </td> 
        <td> 
         <asp:DropDownList runat="server" AutoPostBack="true" ID="Opt" OnSelectedIndexChanged="Opt_SelectedIndexChanged" ValidationGroup="vgOption"> 
          <asp:ListItem Text="--Select Option--" Value="0" /> 
          <asp:ListItem Text="Upload" /> 
          <asp:ListItem Text="Download" /> 
         </asp:DropDownList> 
         <asp:RequiredFieldValidator ID="rfv" runat="server" ControlToValidate="Opt" Display="None" InitialValue="0" ValidationGroup="vgOption" ErrorMessage="Please select an option"></asp:RequiredFieldValidator> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         Postback: 
        </td> 
        <td> 
         <asp:Label Text="" ID="lblMessage" runat="server" /> 
        </td> 
       </tr> 
       <tr> 
        <td> 
        </td> 
        <td> 
         <input type="button" onclick="return ValidateMe();" value="Test" title="Test" /> 
         <asp:ValidationSummary ValidationGroup="vgOption" runat="server" ShowMessageBox="true" ShowSummary="false" DisplayMode="List" /> 
        </td> 
       </tr> 
      </table> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    </form> 
</body> 
</html> 

代碼隱藏:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Opt_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     lblMessage.Text = "Autopostback: " + DateTime.Now.ToString(); 
    } 
} 

步驟來重新填充問題:
1。點擊下拉菜單中的第一個選項
2.點擊提交按鈕
3.更改下拉列表值(這應該解僱的selectedIndex更改事件,但事實並非如此)

PS:我不想回發發生時,按鈕被點擊,這就是爲什麼我添加<input>,而不是提交asp.net按鈕,
即使我添加asp.net按鈕,它不工作

回答

0

更換

<input type="button" value="Test" title="Test" runat="server" validationgroup="vgOption"/> 

<asp:Button ID="btn" runat="server" Title="Test" Text="Test" ValidationGroup="vgOption" OnClientClick="return ValidateMe()"/> 

問題解決了。

+1

這個不起作用,請查看更新後的問題 –

0
Add property ViewStateMode="Enabled" and EnableViewState="true" 
在下降的DropDownList

詳情click here