当值更改时,我有一些checkboxes
和dropdownlist
我希望在传递新值时刷新页面。我尝试使用autopostback
;但是,该值以前已经在url中,所以当回发发生时,值永远不会改变。
示例:
CurrentPage: page.aspx?tab=Home&checkbox=True
然后我取消选中该复选框,以便我转到下一页...
IntendedPage: page.aspx?tab=Home&checkbox=False
但相反,我的autopostback给了我这个页面......
DestinationPage: page.aspx?tab=Home&checkbox=True
因为,我通过页面上的函数处理url的构建。也许到目前为止我做错了什么。如果是这样,我很乐意在我目前的设置上得到纠正。我认为我需要知道的是如何在checkbox.checkchanged事件上加载自定义URL。我希望这是有道理的,如果不是让我知道我会试着澄清它。谢谢!
答案 0 :(得分:2)
你可以尝试这样的事情(我没有测试过,这只是一个想法)。
protected void CheckBox1_CheckedChanged ( object sender, EventArgs e )
{
string url = "page.aspx?tab=Home&checkbox="+ CheckBox1.Checked.ToString();
Response.Redirect ( url );
}
然后在页面上:
<asp:CheckBox ID="CheckBox1" runat="server"
oncheckedchanged="CheckBox1_CheckedChanged" />
VB.NET转换
Protected Sub CheckBox1_CheckedChanged(sender As Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
Dim url = "page.aspx?tab=Home&checkbox=" & CheckBox1.Checked.ToString()
Response.Redirect(url)
End Sub
答案 1 :(得分:0)
此行为是由viewstate引起的。 checkbox
使用它来保留其属性,尤其是checked
属性。
实际上,控件和查询字符串之间没有开箱即用的链接。
根据您的需要,您将有两种选择:
Checked
事件中redirect
用户添加到此页面。缺点是你“松散”了视图状态,从而控制了状态。答案 2 :(得分:0)
这很容易通过javascript完成。首先将onclick="checkCheckBox(this);"
添加到您的复选框。
<script language = "javascript" type="text/javascript">
function checkCheckBox(checkbox) {
if (checkbox.checked) {
window.location.href = '../page.aspx?tab=Home&checkbox=True';
}
else {
window.location.href = '../page.aspx?tab=Home&checkbox=False';
}
}
</script>
这应该很容易做到。