Javascript RadGrid条件行回发
我在页面上有一个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> 但这是行不通的;回发仍在发生。我有一个有两条记录的网格,只有当一个字段的值为“是”
<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
}