Firefox でページが「リロード」される (F5 が押される) たびに、asp:DropDownList
要素 ( を含む) をインデックス 0にリセットするにはどうすればよいですか?runat="server"
JavaScript の使用を提案する場合は、
- フォームを使用していません
runat="server"
with JavaScriptを持つ要素にアクセスする方法がわかりません
これが.aspx
ページ上のスクリプトを使用して実行できる場合は、説明してください。
Firefox でページが「リロード」される (F5 が押される) たびに、asp:DropDownList
要素 ( を含む) をインデックス 0にリセットするにはどうすればよいですか?runat="server"
JavaScript の使用を提案する場合は、
runat="server"
with JavaScriptを持つ要素にアクセスする方法がわかりませんこれが.aspx
ページ上のスクリプトを使用して実行できる場合は、説明してください。
これを行うには、 Page_Loadイベントにコードを配置します
protected void Page_Load(object sender, EventArgs e)
{
myDropDownList.SelectedIndex =0;
}
編集:
コメントに応じて、上記のロジックをifステートメント内に配置して、かどうかを確認した場合Page.IsPostback = false
、選択したインデックスは更新時に0に戻されません(クライアントのポストバックが実行されます)。これを示す例として、選択時に自動ポストバックに設定されたドロップダウンリストのあるページを次に示します。
<%@ 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>My Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" >
</asp:DropDownList>
</div>
</form>
</body>
</html>
これが背後にあるコードです
public partial class _Default : System.Web.UI.Page
{
protected void Page_Init(object sender, EventArgs e)
{
//Apologies for Dairy Produce inspired list
ddl.Items.Add(new ListItem("Cheese"));
ddl.Items.Add(new ListItem("Yoghurt"));
ddl.Items.Add(new ListItem("Milk"));
ddl.Items.Add(new ListItem("Butter"));
}
protected void Page_Load(object sender, EventArgs e)
{
//Run the Page with this in first, then comment out
//the if statement to leave only ddl.SelectedIndex = 0;
if (!Page.IsPostBack)
{
ddl.SelectedIndex = 0;
}
}
}
示されるように、ページが最初に実行されたとき、更新時に、選択されたインデックスはドロップダウンリスト内に保持されます。ただし、if
ステートメントがコメントアウトされると、更新時に、選択されたインデックスが0(この場合はCheese)に設定されます。
このコードをPage_Loadイベントに追加するだけです:
if (myDropDown.Items.Count > 0)
{
myDropDown.Items[myDropDown.SelectedIndex].Selected = false;
myDropDown.Items[0].Selected = true;
}
コードHTMLの下のスクリプトで:
B01 = document.getElementById('<%=me.yourID.clientid %>');
B01.selectedIndex = 0;
ハッピーコーディング^^
Firefox がビューステートを保持してフォームを再作成するのを停止します。
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Browser.Browser == "Firefox")
Form.Attributes.Add("autocomplete", "off");
}