2011-02-05 143 views
158

Tôi có đối tượng DropDownList trong trang web của mình. Khi tôi nhấp vào nó và chọn một giá trị khác, không có gì xảy ra, mặc dù tôi có một chức năng có dây với sự kiện SelectedIndexChanged. Tôi sẽ cố gắng và gửi mã của tôi ở đây là có trật tự càng tốt:Sự kiện SelectedIndexChanged của DropDownList không kích hoạt

Thứ nhất, đối tượng thực tế của mã HTML:

<asp:DropDownList ID="logList" runat="server" 
     onselectedindexchanged="itemSelected"> 
</asp:DropDownList> 

Và đây là chức năng, itemSelected:

protected void itemSelected(object sender, EventArgs e) 
{ 
    Response.Write("Getting clicked; " + sender.GetType().ToString()); 
    FileInfo selectedfile; 
    Response.Write("<script>alert('Hello')</script>"); 
    foreach (FileInfo file in logs) 
    { 
     if (file.Name == logList.Items[logList.SelectedIndex].Text) 
     { 
      Response.Write("<script>alert('Hello')</script>"); 
     } 
    } 
} 

Không ai trong số Câu trả lời xuất hiện và phần JavaScript đó không bao giờ chạy. Tôi đã thử điều này trên phiên bản 3.6 mới nhất của Firefox, cũng như Internet Explorer 8. Điều này đang được phục vụ từ máy Windows Server 2003 R2, chạy ASP.Net với phiên bản .NET Framework 4.

Nếu có ai có thể giúp, điều đó thật tuyệt.

+0

Mọi người, câu trả lời đã được đưa ra và chọn, không cần phải tiếp tục trả lời câu hỏi này. – TGP1994

Trả lời

340

Đặt thuộc tính DropDownList AutoPostBack thành true.

Ví dụ:

<asp:DropDownList ID="logList" runat="server" AutoPostBack="True" 
     onselectedindexchanged="itemSelected"> 
    </asp:DropDownList> 
+3

Vâng, điều đó dường như đã sửa nó, cảm ơn bạn. Bạn có thể giải thích lý do tại sao? – TGP1994

+2

@ TGP1994: Thuộc tính AutoPostBack được sử dụng để đặt hoặc trả lại xem có tự động đăng lại hay không xảy ra –

+1

Khi đang chọn danh sách thả xuống, giá trị đầu tiên của danh sách –

72

thử đặt AutoPostBack="True" trên DropDownList.

38

Tôi biết bài cũ chút, nhưng vẫn còn tôi muốn thêm một cái gì đó để các câu trả lời ở trên.

Có thể có một số tình huống trong đó, "giá trị" của nhiều mục trong danh sách thả xuống được trùng lặp/giống nhau. Vì vậy, hãy đảm bảo rằng bạn không có giá trị lặp lại trong các mục danh sách để kích hoạt "onselectedindexchanged" sự kiện

1

này.

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e) 
{ 
*************** 
*********** 
**** 
} 
+0

Chỉ khi cài đặt AutoEventWireup trên trang aspx là đúng, nếu không bạn cần thực hiện theo cách thủ công, theo ví dụ ban đầu. –

10

Thêm bất động sản ViewStateMode="Enabled"EnableViewState="true"AutoPostBack="true" trong thả DropDownList

Để biết thêm chi tiết click here

1

Đối với tôi câu trả lời đã được thuộc tính trang aspx, tôi đã thêm Async = "true" để thuộc tính trang và điều này giải quyết vấn đề của tôi.

<%@ Page Language="C#" MasterPageFile="~/MasterPage/Reports.Master"..... 
    AutoEventWireup="true" Async="true" %> 

Đây là cấu trúc của bảng cập nhật của tôi

<div> 
    <asp:UpdatePanel ID="updt" runat="server"> 
    <ContentTemplate> 

     <asp:DropDownList ID="id" runat="server" AutoPostBack="true"  onselectedindexchanged="your server side function" /> 

    </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 
2

Ngoài ra hãy chắc chắn trang này là hợp lệ. Bạn có thể kiểm tra điều này trong các công cụ nhà phát triển trình duyệt (F12)

Trong tab Console chọn Target đúng/Khung và kiểm tra sự [Page_IsValid] sở hữu

Nếu trang không hợp lệ biểu mẫu sẽ không nộp và do đó không kích hoạt sự kiện.

+0

Bỏ phiếu cho HerbalMart. Trong trường hợp của tôi trang không hợp lệ nhưng vì tôi sử dụng Telerik RadAjaxManager trên các trang của mình, lỗi này không hiển thị khi tôi thử nghiệm trong trình duyệt của mình. Khi tôi nhận xét toàn bộ RadAjaxManager, lỗi được trình bày chính nó và tôi đã có thể sửa nó. – user2721607

Các vấn đề liên quan