Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE8和IE7中以错误顺序触发的javascript事件(Telerik radgrid)_Javascript_Internet Explorer 8_Internet Explorer 7_Telerik_Telerik Grid - Fatal编程技术网

IE8和IE7中以错误顺序触发的javascript事件(Telerik radgrid)

IE8和IE7中以错误顺序触发的javascript事件(Telerik radgrid),javascript,internet-explorer-8,internet-explorer-7,telerik,telerik-grid,Javascript,Internet Explorer 8,Internet Explorer 7,Telerik,Telerik Grid,我正在使用telerik radgrid,并且已经连接了许多方法,如您在下面看到的 在firefox、chrome和IE9中,事件按以下顺序触发: RowClick RowSelecting RowSelected RowSelecting RowSelected RowClick 在IE8和IE7中,事件按以下顺序触发: RowClick RowSelecting RowSelected RowSelecting RowSelected RowClick 有没有办法在IE8和IE7中对

我正在使用telerik radgrid,并且已经连接了许多方法,如您在下面看到的

在firefox、chrome和IE9中,事件按以下顺序触发:

RowClick
RowSelecting
RowSelected
RowSelecting
RowSelected
RowClick
在IE8和IE7中,事件按以下顺序触发:

RowClick
RowSelecting
RowSelected
RowSelecting
RowSelected
RowClick
有没有办法在IE8和IE7中对事件进行重新排序

var originalClickedRowState = null;
var clickedRow = null;

function rgGrid_OnRowCreating(sender, args) {}
function rgGrid_OnRowCreated(sender, args) {}

function rgGrid_OnRowClick(sender, args) {
    clickedRow = args.get_gridDataItem();
    originalClickedRowState = args.get_gridDataItem().get_selected();
}

function rgGrid_OnRowDeselecting(sender, args) {
    if (clickedRow != null && clickedRow != args.get_gridDataItem()) {
       args.set_cancel(true);
    }
}

function rgGrid_OnRowSelecting(sender, args) {
    if (clickedRow == args.get_gridDataItem() && originalClickedRowState) {
        args.set_cancel(true);
    originalClickedRowState = null;
    clickedRow = null;
}
}

function rgGrid_OnRowSelected(sender, args) {
    originalClickedRowState = null;
    clickedRow = null;    
}
我将这些方法连接到radgrid中

<ClientSettings >
    <Selecting AllowRowSelect="True"  />
    <ClientEvents
        OnRowCreated="rgGrid_OnRowCreated"
    OnRowCreating="rgGrid_OnRowCreating" 
    OnRowClick="rgGrid_OnRowClick" 
    OnRowDeselecting="rgGrid_OnRowDeselecting"
        OnRowDeselected="RowDeselected"
        OnRowSelecting="rgGrid_OnRowSelecting"
       OnRowSelected="rgGrid_OnRowSelected" />                                           
    <Scrolling AllowScroll="True" />
</ClientSettings>

编辑: 我已经编辑了问题以显示我正在使用的代码。我的事件在radgrids事件之前被调用。 我需要以正确的顺序触发事件,因为我需要在确定是否应取消选择任何其他行之前获取已选择的行


我从上一篇论坛帖子中获得了代码,但我对telerik了解不够,无法重写我必须在IE8和IE7中工作的代码。

在应用程序中不应依赖事件顺序


看看这个:

您的答案就最佳实践而言是正确的,但它并不能解决问题。