2013-10-05 5 views
-1

У меня есть DropDownList на моей странице ASPX, со значением:DropDownList не изменяет его значение, когда Перейдите на другую страницу

//DropDownlist value: 1--> show notice in one day ago; 2--> 7 days ago;3--> 30 days ago. 

<asp:DropDownList ID="DropDownListTime" runat="server"> 
        AutoPostBack="true" > 
    <asp:ListItem Selected="True"></asp:ListItem> 
    <asp:ListItem Value="1"> 1 day ago </asp:ListItem> 
    <asp:ListItem Value="2"> 7 days ago </asp:ListItem> 
    <asp:ListItem Value="3"> 30 days ago </asp:ListItem> 
</asp:DropDownList> 

И код в CS странице:

protected void Page_Load(object sender, EventArgs e) 
{ if (!IsPostBack) 
    { 
     BindData(); 
    }    
} 

public void BindData() 
{ 
    string key=""; 
    if (string.IsNullOrEmpty(DropDownListTime.SelectedValue)) 
    { 
     key = "3"; 
    } 
    else 
    { 
     key = DropDownListTime.SelectedValue.ToString(); 
    } 

    HyperLink1.NavigateUrl = string.Format("Allnotice.aspx?key={0}",key); 
    // go to page to show all notices with `1 day`,`7days`,`30 days` ago depend on the `key` 
} 

public void IndexNotice_Changed(Object sender, EventArgs e) 
{ 
    BindData(); 
} 

При отладке ключ с правой кнопкой выбирается. Но после выбора опции в Dropdownlist, я нажимаю на гиперссылку, она переходит на страницу Allnotice.aspx с ключом = "3". Всегда и всегда, какой вариант я выбрал.

Для деталей: я выбираю 7 days ago ---> debug: key= 2 -> затем щелкните по гиперссылке ---> на следующей странице получена key=3.

Справка !!!!

ОБНОВЛЕНИЕ: Я задал эту проблему, но никто не может помочь. Поэтому я пытаюсь описать это простым способом, надеюсь, что вы не возражаете, если это будет повторяться.

DropDownList doesn't change it's value

+0

Я отформатированный код для более читабельность. – Kaf

ответ

0

Вы не назначили обработчик событий для управления DropDownList, так что даже если страница является размещение обратно не будет срабатывать IndexNotice_Changed события, как вы ожидаете.

//Assign IndexNotice_Changed event to the OnSelectedIndexChanged 
<asp:DropDownList ID="DropDownListTime" 
        Runat="server" AutoPostBack="true" 
        OnSelectedIndexChanged="IndexNotice_Changed" > //NOTE HERE 
    <asp:ListItem Selected="True"></asp:ListItem> 
    <asp:ListItem Value="1"> 1 day ago </asp:ListItem> 
    <asp:ListItem Value="2"> 7 days ago </asp:ListItem> 
    <asp:ListItem Value="3"> 30 days ago </asp:ListItem> 
</asp:DropDownList> 

<asp:HyperLink ID="HyperLink1" runat="server"></asp:HyperLink> 
+0

Да, он имеет OnSelectedIndexChanged = "IndexNotice_Changed" в моем коде, я забыл его при копировании –

+0

Когда я дегустирую, ключ прав (я имею в виду, что это правильно с каждой выбранной опцией). затем, когда я нажимаю на гиперссылку, адресная строка показывает: key = 3 always –

+0

Кажется, нет проблем с Dropdownlist, она возвращает правильное значение ключа. Мне просто интересно, если после загрузки страницы после выбора Dropdownlist, ключ имеет изменение в defautl ?? –

0

один вариант может использовать значение скрытое в JavaScript, чтобы всегда сохранять выбранную опцию

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js' type='text/javascript'></script> 
<script type="text/javascript"> 
$("#<%=DropDownListTime.ClientID%>").change(function(e) { 
    var dpdVal=$("#<%=DropDownListTime.ClientID%>").val(); 
    document.getElementById("<%=hiddenFieldControl.ClientID%>").value=dpdVal; 
}); 
</script> 

так, вы можете заменить на это:

public void BindData() 
{ 
    string key=""; 
    if (string.IsNullOrEmpty(hiddenFieldControl.Value)) 
    { 
     key = "3"; 
    } 
    else 
    { 
     key = hiddenFieldControl.Value.ToString(); 
    } 

    HyperLink1.NavigateUrl = string.Format("Allnotice.aspx?key={0}",key); 
    // go to page to show all notices with `1 day`,`7days`,`30 days` ago depend on the `key` 
} 
+0

Что именно скрыто? FieldControl? Можете ли вы рассказать мне больше? –

+0

hiddenFieldControl - это серверный элемент управления, на котором вы можете хранить информацию на странице asp, я использую ее, когда у меня возникают проблемы с сохранением значений на стороне сервера или когда мне приходится передавать значения с клиентской стороны на сервер, поэтому я сохраняю значение, используя javascript, и может получить значение со стороны сервера. cgonzalez

Смежные вопросы