我在页面上有一个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();
}
}
但这不起作用;回发仍然发生。我有一个有两个记录的网格,只有当一个字段的值为&#34;是&#34;时才需要它回发,但是我无法使其工作。我确定它没有达到任何条件,但即使在停止传播之后,事件仍然会发生。知道如何停止回发吗?我无法使用RowSelecting,因为它永远不会触发,因为我会在行点击中回复。
答案 0 :(得分:0)
删除EnablePostBackOnRowClick - 将其设置为false。添加RadAjaxManager(如果还没有),并手动触发PostBack。尝试这样的事情:
<telerik:RadAjaxManager runat="server" ID="ajaxMgr"></telerik:RadAjaxManager>
<script type="text/javascript">
function rowClick(sender, args) {
var mastertable = sender.get_masterTableView();
var id = mastertable.getCellByColumnUniqueName(args.get_item(), "Id").innerHTML;
if (id == "1") {
var ajaxMgr = $find("<%= ajaxMgr.ClientID %>");
ajaxMgr.ajaxRequestWithTarget("<%= grid.UniqueID %>", id);
}
}
</script>
然后,您需要在代码隐藏上处理RaisePostBackEvent方法:
protected override void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
{
// Do something interesting
}
答案 1 :(得分:0)
您需要做的就是在条件满足时阻止使用OnRequestStart
事件进行ajax调用。为此,您必须:
聆听OnRequestStart
,如果您的行被点击,则返回false
:
在你的js中:
var myRowHaveBeenClicked = false;
function OnRequestStart(){
if(myRowHaveBeenClicked){
myRowHaveBeenClicked = false;
return false;
}
}
在你的ASP中:
<telerik:RadAjaxManager runat="server" ID="ajaxmanager">
<clientevents onRequeststart="OnRequestStart" />
.......
剩下要做的就是在你的rowClick函数中设置myRowHaveBeenClicked
标志。
在你的RowClick函数中:
function RowClick(sender, e) {
var masterTable = sender.get_masterTableView();
var hasReport = masterTable.getCellByColumnUniqueName(e.get_item(), "HasReport").innerHTML;
myRowHaveBeenClicked = hasReport.trim() == "No";
}
RowClick
事件发生在RequestStart
之前,因此,在那一刻,您可以设置一个标志,指示不应该发生回发。
解决方案是否远非干净或优雅,但它的工作原理非常简单。
希望有所帮助:)