-1

aspx ページにドロップダウンリストがあり、値は次のとおりです。

//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();
}

デバッグするとき、キーは私が選択したオプションで正しいです。しかし、ドロップダウンリストでオプションを選択した後、ハイパーリンクをクリックすると、Allnotice.aspxkey="3" のページに渡されます。いつでも、いつでも、私が選んだオプションでさえ。

詳細: 7 days ago---> デバッグを選択します: key= 2--> 次にハイパーリンクをクリックします---> 次のページでkey=3.

ヘルプ!!!!

更新: 私はこの問題を尋ねましたが、誰も助けることができません. 簡単に説明したいと思いますので、重複しても構いません。

DropDownList はその値を変更しません

4

2 に答える 2

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>
于 2013-10-05T17:28:31.613 に答える
0

1 つのオプションは、javascript で hiddenfield 値を使用して、選択したオプションを常に保存することができます

<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`
}
于 2013-10-05T17:53:58.407 に答える