2013-10-04 44 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(); 

     }    
    } 
相关问题