导航到其他页面时,DropDownList不会更改其值

时间:2013-10-05 17:03:03

标签: c# asp.net

我的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 ---&gt; debug:key= 2 - &gt;然后点击Hyperlink ---&gt;下一页收到了key=3

帮助!

更新:我问过这个问题,但没有人可以提供帮助。所以我试着以一种简单的方式描述它,希望你不介意它是否重复。

DropDownList doesn't change it's value

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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`
}