我有以下ImageButton,它可以切换日历控件的visibility属性。
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/calendar.png" OnClick="Display_Calendar1"/>
问题是,当我点击它时,它会发送一个与我的其他代码冲突的回发命令。我已经看到有关于此的多个线程,其中最常见的解决方案是调用“return false;”在OnClick事件上。但是,我仍然需要运行日历切换方法:
//cStart_Date is the calendar control and tbStart_Date is a textbox where I write down the chosen date.
protected void Display_Calendar1(object sender, ImageClickEventArgs e)
{
if (IsValidDate(tbStart_Date.Text))
{
cStart_Date.SelectedDate = Convert2Date(tbStart_Date.Text);
cStart_Date.VisibleDate = cStart_Date.SelectedDate;
}
cStart_Date.Visible = !cStart_Date.Visible;
}
在我看过的所有例子中,函数在“return false”之前运行。是一个JavaScript函数,但我希望它运行我的C#方法。当我在浏览器上启动它时,这会导致服务器错误,并显示 编译器错误消息:CS1026 :)预期
我也尝试过没有参数 protected void Display_Calendar1()的方法,但结果是一样的......
答案 0 :(得分:1)
切换日历控件也可以通过java脚本完成。您需要使用Image按钮的OnClientClick属性。
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/calendar.png" OnClientClick="ToggleCalendar"/>
<script>
function ToggleCalendar() {
var clndr= document.getElementById('cStart_Date');
clndr.style.display = (clndr.style.display == 'none') ? 'block' : 'none';
}
</script>
您可以在Java脚本功能中执行验证或其他内容。
答案 1 :(得分:0)
显然执行服务器端点击事件时无法避免回发。 updatePanel将最小化渲染负载并最小化页面闪烁,但仍会有回发调用,从而无法实现我的目的。我想在客户端用javascript做这是唯一的方法。