Javascript RadGrid条件行回发

Javascript RadGrid条件行回发,javascript,asp.net,telerik,webforms,radgrid,Javascript,Asp.net,Telerik,Webforms,Radgrid,我在页面上有一个RadGrid,当您单击该行时它会发回,配置如下: <ClientSettings EnablePostBackOnRowClick="true"> <Selecting AllowRowSelect="true" /> <ClientEvents OnRowClick="RowClick" /> </ClientSettings> 但这是行不通的;回发仍在发生。我有一个有两条记录的网格,只有当一个字段的值为“是”

我在页面上有一个RadGrid,当您单击该行时它会发回,配置如下:

<ClientSettings EnablePostBackOnRowClick="true">
    <Selecting AllowRowSelect="true" />
    <ClientEvents OnRowClick="RowClick" />
</ClientSettings>

但这是行不通的;回发仍在发生。我有一个有两条记录的网格,只有当一个字段的值为“是”时,我才需要它回发,但我无法让它工作。我确信它达到了“无”条件,但即使在停止传播后,事件仍会触发。知道如何阻止回发吗?我无法使用行选择,因为它从不激发,因为我正在行单击上发帖。

删除EnablePostBackOnRowClick-将其设置回false。如果您还没有管理器,请添加一个管理器,并手动触发回发。试着这样做:

<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>

删除EnablePostBackOnRowClick-将其设置回false。如果您还没有管理器,请添加一个管理器,并手动触发回发。试着这样做:

<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>

当您的条件满足时,您所要做的就是使用
OnRequestStart
事件防止ajax调用。为此,您必须:

聆听
OnRequestStart
并返回
false
,如果您的行刚刚被单击:

在您的js中:

var myRowHaveBeenClicked=false;
函数OnRequestStart(){
如果(我的行已被选中){
myRowHaveBeenClicked=false;
返回false;
}
}
在ASP中:


.......
剩下要做的就是在rowClick函数中设置
MyRowHaveInclicked
标志

在您的行单击功能中:

函数行单击(发件人,e){
var masterTable=sender.get_masterTableView();
var hasReport=masterTable.getCellByColumnUniqueName(e.get_item(),“hasReport”).innerHTML;
myRowHaveBeenClicked=hasReport.trim()=“否”;
}
RowClick
事件发生在
RequestStart
之前,因此,此时您可以设置一个标志,指示回发不应发生

Is解决方案远非干净或优雅,但它可以工作并且非常简单


希望它有帮助:)

当您的条件满足时,您所要做的就是使用
OnRequestStart
事件防止ajax调用。为此,您必须:

聆听
OnRequestStart
并返回
false
,如果您的行刚刚被单击:

在您的js中:

var myRowHaveBeenClicked=false;
函数OnRequestStart(){
如果(我的行已被选中){
myRowHaveBeenClicked=false;
返回false;
}
}
在ASP中:


.......
剩下要做的就是在rowClick函数中设置
MyRowHaveInclicked
标志

在您的行单击功能中:

函数行单击(发件人,e){
var masterTable=sender.get_masterTableView();
var hasReport=masterTable.getCellByColumnUniqueName(e.get_item(),“hasReport”).innerHTML;
myRowHaveBeenClicked=hasReport.trim()=“否”;
}
RowClick
事件发生在
RequestStart
之前,因此,此时您可以设置一个标志,指示回发不应发生

Is解决方案远非干净或优雅,但它可以工作并且非常简单


希望有帮助:)

我以前做过。。。我正在写一个演示,并将简短地回答我以前做过这个。。。我正在写一个演示,很快会回复
protected override void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
{
     // Do something interesting
}