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

javascript events fired in wrong order in IE8 and IE7 (Telerik radgrid)

本文关键字:顺序 错误 事件 javascript IE7 IE8 Telerik radgrid      更新时间:2023-09-26

我使用的是telerik radgrid,并连接了许多方法,如下所示。

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

RowClick
RowSelecting
RowSelected

在IE8和IE7中,事件按以下顺序启动:

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

我在雷达栅格中连接了这些方法

<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上的这个论坛帖子中得到了代码,我对telerik的了解不够,无法重写代码,我必须在IE8和IE7中工作。

应用程序中不应该依赖事件顺序。

看看这个:http://www.quirksmode.org/js/events_order.html