我在页面上有一个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();
}
}但这不起作用;回发仍然会发生。我有一个有两个记录的网格,只有当一个字段的值为"Yes“时,我才需要它来回发,但我不能让它工作。我确信它正在达到no条件,但即使在停止传播之后,该事件仍然会触发。你知道怎么停止回发吗?我不能使用RowSelecting,因为它从来不会触发,因为我是在行单击发回的。
发布于 2013-04-19 02:50:24
丢弃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
}发布于 2014-06-17 05:08:45
当您的条件满足时,您需要做的就是阻止使用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之前,因此,在那一刻您可以设置一个标志,指示不应发生回发。
Is解决方案远不是干净或高尚的,但它是有效的,并且非常简单。
希望它能有所帮助:)
https://stackoverflow.com/questions/16088935
复制相似问题