208

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のその部分は実行されません。Firefoxの最新の3.6バージョンとInternetExplorer8でこれを試しました。これは、.NETFrameworkバージョン4でASP.NETを実行しているWindowsServer2003R2マシンから提供されています。

4

7 に答える 7

429

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

例えば:

<asp:DropDownList ID="logList" runat="server" AutoPostBack="True" 
        onselectedindexchanged="itemSelected">
    </asp:DropDownList>
于 2011-02-05T06:06:51.460 に答える
82

AutoPostBack="True"DropDownList で設定してみてください。

于 2011-02-05T06:05:22.227 に答える
45

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

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

于 2012-03-07T14:22:24.623 に答える
4

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

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

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

于 2016-10-24T12:04:41.270 に答える
3

私の答えは 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>
于 2016-07-26T17:45:45.473 に答える
1

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

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
 //code goes here
}
于 2013-07-02T05:30:54.137 に答える