我在页面上有一个RadGrid,当您单击该行时,它会回发,配置如下:
<ClientSettings EnablePostBackOnRowClick="true">
<Selecting AllowRowSelect="true" />
<ClientEvents OnRowClick="RowClick" />
</ClientSettings>
我试图通过以下方式停止事件的传播来停止回发:
function RowClick(sender, e) {
var masterTable = sender.get_masterTableView();
var hasReport = masterTable.getCellByColumnUniqueName(e.get_item(), "HasReport").innerHTML;
if (hasReport.trim() == "No") {
e.get_domEvent().preventDefault();
e.get_domEvent().stopPropagation();
}
}
但这不起作用;回发仍然发生 . 我有一个有两个记录的网格,只有当一个字段的值为“是”时我才需要它回发,但是我不能让它工作 . 我确信它没有达到任何条件,但即使在停止传播之后,事件仍然会发生 . 知道如何停止回发吗?我不能使用RowSelecting,因为它永远不会触发,因为我在行单击时回发 .
2 回答
删除EnablePostBackOnRowClick - 将其设置为false . 添加RadAjaxManager(如果还没有),并手动触发PostBack . 尝试这样的事情:
然后,您需要在代码隐藏上处理RaisePostBackEvent方法:
您所要做的就是在条件满足时阻止使用
OnRequestStart
事件调用ajax . 为此,您必须:如果您的行刚刚被点击,请收听
OnRequestStart
并返回false
:在你的js中:
在你的ASP中:
剩下要做的就是在你的rowClick函数中设置
myRowHaveBeenClicked
标志 .在你的RowClick函数中:
RowClick
事件发生在RequestStart
之前,因此,在那一刻,您可以设置一个标志,指示不应发生回发 .解决方案远非干净或优雅,但它的工作原理非常简单 .
希望能帮助到你 :)