私の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マシンから提供されています。
だれでも手伝うことができれば、それは素晴らしいことです。
DropDownList AutoPostBack
プロパティをtrueに設定します。
例えば:
<asp:DropDownList ID="logList" runat="server" AutoPostBack="True"
onselectedindexchanged="itemSelected">
</asp:DropDownList>
dropDownListにAutoPostBack="True"
を設定してみてください。
もう少し古い記事を知っていますが、それでも上記の回答に何か追加したいと思います。
で、ドロップダウンリスト内の複数の項目の「値」が重複している、または同じである状況があるかもしれません。したがって、この "onselectedindexchanged"イベントをトリガーするためのリスト項目に繰り返し値がないことを確認してください。
ドロップダウンのプロパティViewStateMode="Enabled"
とEnableViewState="true"
そしてAutoPostBack="true"
を追加します。DropDownList
また、ページが有効であることを確認してください。これはブラウザの開発者ツール(F12)で確認できます。
[コンソール]タブで正しいターゲット/フレームを選択し、[Page_IsValid]プロパティを確認します。
ページが無効な場合、フォームは送信されないため、イベントは発生しません。
私の答えは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>
コードを書いた代わりに、ドロップダウンリストコントロールのSelectedIndexChangedイベントに直接書き込むことができます。
protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
***************
***********
****
}