2013-10-04 42 views
1

我的問題非常靈活,所以我不知道這個問題的正確標題是什麼。我會盡力描述我的問題,希望你能明白,如果你不這樣,請問。DropDownList不會更改它的值

我在我的notice.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" 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

? –

+0

我複製並粘貼了你的代碼,沒有看到任何錯誤,總是關鍵的變化如果我點擊其他選項 –

+0

@Freak_Droid是的,我也是,當我點擊其他選項時,鍵改變,但是當我選擇一個選項,然後單擊HyperLink - >新的頁面打開與價值鍵= 3 –

回答

1

在初始頁面加載,關鍵將永遠是3,其結果是,超鏈接的關鍵是3

一旦你選擇的DropDownList一個新值,超鏈接的鍵將改變你選擇的任何值。

我注意到你不應該在你的場景中使用靜態值。

private static string key; 

刪除上述行,您是否使用了DropDownList的配置,其中的超級鏈接進入,或顯示數據,或兩者移動它內部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(Object sender,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(); 

     }    
    } 
相關問題