web-dev-qa-db-ja.com

DropDownListのSelectedIndexChangedイベントが発生しない

私のWebページにDropDownListオブジェクトがあります。クリックして別の値を選択しても、SelectedIndexChangedイベントに結び付けられた関数があっても何も起こりません。私は自分のコードをできるだけ秩序正しくここに投稿します。

まず、実際のオブジェクトのHTMLコード

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

そしてこれがその関数です、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>");
        }
    }
}

応答はどれも表示されず、JavaScriptのその部分は実行されません。私はこれをInternet Explorer 8だけでなくFirefoxの最新の3.6バージョンでも試しました。これは.NET Frameworkバージョン4でASP.Netを実行しているWindows Server 2003 R2マシンから提供されています。

だれでも手伝うことができれば、それは素晴らしいことです。

180
TGP1994

DropDownList AutoPostBackプロパティをtrueに設定します。

例えば:

<asp:DropDownList ID="logList" runat="server" AutoPostBack="True" 
        onselectedindexchanged="itemSelected">
    </asp:DropDownList>
369
Vyas Dev

dropDownListにAutoPostBack="True"を設定してみてください。

76

もう少し古い記事を知っていますが、それでも上記の回答に何か追加したいと思います。

で、ドロップダウンリスト内の複数の項目の「」が重複している、または同じである状況があるかもしれません。したがって、この "onselectedindexchanged"イベントをトリガーするためのリスト項目に繰り返し値がないことを確認してください。

41
4u.Ans

ドロップダウンのプロパティViewStateMode="Enabled"EnableViewState="true"そしてAutoPostBack="true"を追加します。DropDownList

12
Singh

また、ページが有効であることを確認してください。これはブラウザの開発者ツール(F12)で確認できます。

[コンソール]タブで正しいターゲット/フレームを選択し、[Page_IsValid]プロパティを確認します。

ページが無効な場合、フォームは送信されないため、イベントは発生しません。

5
HerbalMart

私の答えはaspxページ属性でした、私はページ属性にAsync = "true"を追加し、これは私の問題を解決しました。

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

これが私のアップデートパネルの構造です

<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
Justin F

コードを書いた代わりに、ドロップダウンリストコントロールのSelectedIndexChangedイベントに直接書き込むことができます。

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
***************
***********
****
}
1
user2541273