DropdownList сбрасывается до индекса 0 при загрузке - PullRequest
4 голосов
/ 23 марта 2009

Как мне сбросить мой элемент asp:DropDownListrunat="server") на индекс 0 каждый раз, когда страница «перезагружается» в Firefox (нажата клавиша F5)?

Если вы предлагаете использовать JavaScript, учтите, что

  • Я не использую форму
  • Я не знаю, как получить доступ к элементам, которые имеют runat="server" с помощью JavaScript

Если это можно сделать с помощью скрипта на странице .aspx, объясните, пожалуйста.

Ответы [ 4 ]

7 голосов
/ 23 марта 2009

введите код в событие Page_Load , чтобы сделать это

protected void Page_Load(object sender, EventArgs e)
{    
    myDropDownList.SelectedIndex =0;
}

EDIT:

В ответ на ваши комментарии: если вы поместили вышеуказанную логику в оператор 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 (что в данном случае равно Сыр ).

1 голос
/ 06 января 2012

остановите Firefox от сохранения состояния просмотра и повторного заполнения формы:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Browser.Browser == "Firefox")
            Form.Attributes.Add("autocomplete", "off");
    }
1 голос
/ 17 марта 2010

В вашем скрипте под кодом HTML:

B01 = document.getElementById('<%=me.yourID.clientid %>');
B01.selectedIndex = 0;

Счастливое кодирование ^^

1 голос
/ 23 марта 2009

Просто добавьте этот код в событие Page_Load:

if (myDropDown.Items.Count > 0)
{
    myDropDown.Items[myDropDown.SelectedIndex].Selected = false;
    myDropDown.Items[0].Selected = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...