折腾了好久,最后发现延时一会就搞定了。


1.先获取当前选中的行,

2.然后清除了所有选中行,

3.最后延时一会,再重新选中,不需要选中的也需要通过 “uncheckRow” 处理。


var curSelectRow = $('#lineBox1').datagrid('getSelections');//获取当前选中  
        var maxSelectNum = 10;  
        if(curSelectRow.length > maxSelectNum){  
            tipSelectAll(maxSelectNum);  
        }  
  
        // 当超过最大限制,则提示并且去掉超过部分的选中  
        function tipSelectAll(curSelectRow){  
            var curSelectRow = curSelectRow.slice();  
            $.messager.alert('提示','线路不能超过'+maxSelectNum+'条!');  
            $('#lineBox1').datagrid('unselectAll');//清除所有选中  
            // 取消复选框选中状态需要延时一会  
            setTimeout(function(){  
                $.each(curSelectRow,function(i,v){  
                    var index = $('#lineBox1').datagrid('getRowIndex',v);//获取行号   
                    if(i<=maxSelectNum-1){  
                        $('#lineBox1').datagrid('selectRow',index);//选择该行  
                    }else{  
                        $('#lineBox1').datagrid('uncheckRow',index);//取消该行选择  
                    }  
                });  
            }, 200);  
        }  


Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐