解决方案 »

  1.   

    在 remove 、append 或者 insert之后记得执行  datagrid 的 acceptChanges方法
      

  2.   

    错了,是在 deleteRow、appendRow 或者 insertRow之后记得执行  datagrid 的 acceptChanges方法
      

  3.   


    function ajaxTable(){
    //加载表格
    $('#userTable').datagrid({
    toolbar:[{//正上方工具栏
    text:'添加用户',
    iconCls:'icon-add',
    handler:function(){
    //点击工具栏运行的js方法
    openDialog_add();
    }
    },'-',{
    text:'批量删除',
    iconCls:'icon-cancel',
    handler:function(){
    batch('delete');
    }
    },'-',{
    text:'批量启用',
    iconCls:'icon-ok',
    handler:function(){
    batch('available');
    }
    },'-',{
    text:'批量禁用',
    iconCls:'icon-remove',
    handler:function(){
    batch('invalid');
    }
    },'-',{
    text:'信息查询',
    iconCls:'icon-search',
    handler:function(){
    //点击工具栏运行的js方法
    openDialog_search();
    }
    }],
    pageNumber : 1,
    loadMsg:'数据加载中,请稍后...',
    pageList:[10,30,50,100], //设置每页显示多少条
    onLoadError:function(){
    alert('数据加载失败!');
    },
    queryParams:{//查询条件
    },
    onClickRow:function(rowIndex, rowData){
    //取消选择某行后高亮
    $('#userTable').datagrid('unselectRow', rowIndex);
    },
    onLoadSuccess:function(){
    var value = $('#userTable').datagrid('getData')['errorMsg'];
    if(value!=null){
    alert("错误消息:"+value);
    }
    }
    }).datagrid('acceptChanges');
    }
    /**
     * 修改状态的Ajax
     * @param url
     * @return
     */
    function changeStatus(url){
    $.ajax({
    async : false,
    cache:false,
    type: 'POST',
    dataType : "json",
    url:url,//请求的action路径
    error: function () {//请求失败处理函数
    alert('请求失败');
    },success:function(data){
    if(data!=null){//返回异常信息
    $.messager.alert('错误提示',data.errorMsg,'error');
    }
    reloadTable();
    }
    });
    }/**
     * 批量操作
     * @return
     */
    function batch(flag){
    if($('#userTable').datagrid('getSelected')){
    //首先如果用户选择了数据,则获取选择的数据集合
    var ids = [];
    var cods = [];
    var selectedRow = $('#userTable').datagrid('getSelections');
    for(var i=0;i<selectedRow.length;i++){
    ids.push(selectedRow[i].userid);
    cods.push(selectedRow[i].availability);
    }
    var userid = ids.join(',');

    if(flag == "available"){
    //启用操作
    $.messager.confirm('启用提示', '你确定启用下列用户吗?<br/>'+cods.join(','), function(r){
    if (r){
    var url = root+'/useropr/userOpr!ajaxSetUserStatus.action?userid='+userid;
    changeStatus(url);
    }
    });
    }else if(flag == "invalid"){
    //禁用操作
    $.messager.confirm('禁用提示', '你确定禁用下列用户吗?<br/>'+cods.join(','), function(r){
    if (r){
    var url = root+'/useropr/userOpr!ajaxSetUserStatus.action?userid='+userid;
    changeStatus(url);
    }
    });
    }else{
    //删除操作
    $.messager.confirm('删除提示', '你确定永久删除下列用户吗?<br/>'+cods.join(','), function(r){
    if (r){
    var url = root+'/useropr/userOpr!delNews.action?userid='+userid;
    changeStatus(url);
    }
    });
    }
    }//end of if
    }
    这个是我的源码,我已经加了acceptChanges呀,还是不行呀。
      

  4.   

    问题在reloadTable方法中,在你调用了datagrid的reload方法之后执行 $('#userTable').datagrid("acceptChanges")
    acceptChanges方法的作用看API就明白了
      

  5.   

    实在不行在数据重新加载之前执行一句 $('#userTable').datagrid("unselectAll");
      

  6.   

    试了一下, $('#userTable').datagrid("acceptChanges")还是不行,不过$('#userTable').datagrid("unselectAll");可以解决问题,不过总感觉这个办法不太合理,呵呵,不知道是不是datagrid的BUG呀这个是。
      

  7.   

    http://blog.csdn.net/majian_1987/article/details/8716448