2013-10-04 3 views
1

Моя проблема настолько гибкая, поэтому я не знаю, что является правильным заголовком для этого вопроса. Я попытаюсь четко описать свою проблему, надеюсь, что вы поймете, если вы не спросите, пожалуйста, спросите.DropDownList не меняет его значение

Я использую DropDownList на моей странице notice.aspx.

DropDownlist value: 1--> show notice in one day ago; 2--> 7 days ago;3--> 30 days ago. 
<asp:DropDownList ID="DropDownListTime" runat="server" OnSelectedIndexChanged="IndexNotice_Changed" 
      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> 

И код в notice.aspx.cs

private static string key; 
protected void Page_Load(object sender, EventArgs e) 
     { if (!IsPostBack) 
      { 
       BindData(); 

      }    
     } 

      public void BindData() 
      { 
      string sql=""; 
        if (string.IsNullOrEmpty(DropDownListTime.SelectedValue)) 
        { 
         key = "3"; 
        } 
        else 
        { 
         key = DropDownListTime.SelectedValue.ToString(); 
        } 
        if(key.Equals("1")) 
       { 
         sql="select top 5 notice in 1 day ago...";//show 
        } 
       if(key.Equals("2")) 
       { 
        sql="select top 5 notice in 7 day ago..."; 
       } 
       if(key.Equals("3")) 
       { 
         sql="select top 5 notice in 30 day ago..."; 
       } 
        Datatable dt= excute(sql); 
        ... 
       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(); 
     } 

Когда я нажимаю на hyperlink1, ключ является 3 непрестанно; поэтому страница Allnotice.aspx всегда показывает уведомления в 30 дней назад.

Я действительно не знаю, почему значение dropdownlist всегда равно 3. Есть ошибки в моем коде выше, пожалуйста, помогите!

UPDATE:

Я удалил строку: private static string key; и объявить string key="" в BindData() он все еще работает неправильно.

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

Помощь !!!

+0

Вы используете DropDownList для настройки, где HyperLink идет, или для отображения данных, или как? –

+0

Я скопировал и вставил ваш код и не вижу никакой ошибки, всегда с изменением ключа. Если я нажимаю другую опцию. –

+0

@Freak_Droid да, меня тоже, изменение ключа при нажатии другой опции, но когда я выбираю один параметр, а затем нажмите HyperLink -> открыта новая страница с ключом значения = 3 –

ответ

1

На начальной странице загрузки, ключ всегда будет 3. В результате ключ гиперссылки: 3.

После выбора нового значения в DropDownList, ключ гиперссылки изменится на любое значение вы выбрали.

Что я замечаю, вы не должны использовать статическое значение в своем сценарии.

private static string key; 

Удалить выше линии, и переместить его в BindData() метод

public void BindData() 
{ 
    string key; 
    string sql = ""; 
    if (string.IsNullOrEmpty(DropDownListTime.SelectedValue)) 
    { 
     key = "3"; 
    } 
    ... 
} 
+0

давайте попробуем, и я скоро дам вам результат –

+0

ключ все равно 3, мне интересно, имеет ли IndexNotice_changed какая-то ошибка ??? –

+0

Установите точку прерывания в 'public void IndexNotice_Changed (отправитель объекта, EventArgs e) {'. Если точка разрыва попала, тогда выполните шаг (F10) до 'if (string.IsNullOrEmpty (DropDownListTime.SelectedValue)). Скажите мне значение 'DropDownListTime.SelectedValue' – Win

-1
protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      if(Request.QueryString["key"]!=null) 
      { 
       DropDownListTime.SelectedValue= QueryString["key"]; 
      } 

      BindData(); 

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