如何在没有完整回发的情况下举办活动?

时间:2012-02-07 15:20:43

标签: c# asp.net

我在UpdatePanel中有两个控件;一个复选框和一个时间戳。

当我单击复选框(事件CheckedChanged)时,它应该使timepicker可编辑(ReadOnly = false),反之亦然。我希望事件CheckedChanged在没有完整回发的情况下被提升。

如果没有在javascript中执行此操作,是否有解决方法?我不太清楚如何管理UpdatePanel上的触发器。

谢谢!

(asp.net 4.0,C#)

2 个答案:

答案 0 :(得分:2)

不幸的是,使用UpdatePanel会导致完整的回发。因此,如果您不想要,那么您必须使用客户端JavaScript。

它不是很复杂。找一个可以为你编写JavaScript的人,这不是火箭科学。

答案 1 :(得分:0)

您可以通过检查Request.IsPostback以及特定控件是否导致它(回发),向OnInit和OnLoad添加代码以跳过执行它们包含的代码; e.g:

<asp:CheckBox runat="server" ID="MyCheckbox" AutoPostBack="true" />


if(this.Request.IsPostback && this.Request.Form["__EVENTTARGET"] == this.MyCheckbox.ID)
{
    return;
}

因为我没有对此进行测试,所以如果您的复选框嵌套在其他控件中,这将导致其ClientID和UniqueID被添加到父控件之前&#39; ID值,然后测试上面的那两个属性。此外,您可以将该条件更改为相反,显然,您可以将完整的正文代码包装在该IF块中(如果您喜欢这样,或者如果您不喜欢一种方法中的多个return语句)。

我希望我理解得很好 - 这样可以省去一些处理;但是,它可能有负面的副作用(例如,如果你有动态地在控制树上添加控件的代码,在服务器上的init / load方法中,那么你想要那些总是执行,即使在这种情况下;否则,那些dyn控件的viewstate将变为无效。)