首页 新闻 会员 周边

Asp.Net MVC EasyUI DataGrid查询分页

0
悬赏园豆:5 [已解决问题] 解决于 2015-04-21 10:01

之前在WebForm里用easyui比较多,有空想在mvc下使用easyui datagrid,但是在查的时候遇到点问题,先帖代码:
前端JS:

function doSearch() {
       //查询方法
        var searchValue = $('#txtQueryTC001').textbox('getText');
        $('#dgCMSTC').datagrid('options').queryParams = { condition: searchValue };
        //initDataGrid(searchValue);
        $.ajax({
            type: 'post',
            url: '/CMSTC/GetJson',
            data: 'condition=' + searchValue,
            dataType: 'json',
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $.messager.alert("查询数据", "发生错误!" + errorThrown, "error");
            },
            success: function (data) {
                console.info(data);
                //$.messager.alert('数据', JSON.stringify(data), 'info');
                $('#dgCMSTC').datagrid('load', []);
                $('#dgCMSTC').datagrid('load', data);
 
                //initDataGrid(searchValue);
            }
        });
    }
 
$(function () {
        //初始化datagrid
        $('#dgCMSTC').datagrid({
            method: 'post',
            url: '/CMSTC/GetJson',
            singleSelect: true,
            fit: true,
            border: true,
            pagination: true,
            pageSize: 20,
            queryParams: { condition: '' },
            columns: [[
                    { field: 'TC001', title: '仓库编号', width: 100 },
                    { field: 'TC002', title: '仓库名称', width: 100 },
                    { field: 'TC003', title: '仓库电话', width: 100 },
                    { field: 'CREATOR', title: '创建者', width: 100 },
                    { field: 'CREATE_DATE', title: '创建日期', width: 100 },
                    { field: 'MODIFIER', title: '修改者', width: 100 },
                    { field: 'MODI_DATE', title: '修改日期', width: 100 }
                ]],
            toolbar: '#toolQuery',
            onLoadSuccess: function (data) {
                if (data.total > 0) {
                    $('#dgCMSTC').datagrid('selectRow', 0);
                }
            }
        });
});
 
<a id="btnSearch" href="#" class="easyui-linkbutton" iconcls="icon-search" plain="true" onclick="doSearch();">Search</a>

后台代码:

public JsonResult GetJson()
        {
            using (var myDb = new studydb<CMSTC>(strConn))
            {
                string strCondition = Request.Form["condition"];
                int page = 1;
                int rows = 20;
                List<CMSTC> myCMSTC;
                List<CMSTC> myCMSTCPAGE;
                if (Request.Form["page"]!=null) {
                    page = Convert.ToInt32(Request.Form["page"].ToString());  
                }
                if (Request.Form["rows"] != null)
                {
                    rows = Convert.ToInt32(Request.Form["rows"].ToString());
                }
                if (string.IsNullOrEmpty(strCondition))
                {
                    myCMSTC = myDb.CMSTC.ToList();       //查询数据都是正确的
                    myCMSTCPAGE = myDb.CMSTC.OrderBy(i => i.TC001).Skip((page - 1) * rows).Take(rows).ToList();
                }
                else
                {
                     myCMSTC = myDb.CMSTC.Where(p => p.TC001.Contains(strCondition) || p.TC002.Contains(strCondition)).ToList();       //查询数据都是正确的
                     myCMSTCPAGE = myDb.CMSTC.OrderBy(i => i.TC001).Where(p => p.TC001.Contains(strCondition) || p.TC002.Contains(strCondition)).Skip((page - 1) * rows).Take(rows).ToList();
                }
                return Json(new { total = myCMSTC.Count, rows = myCMSTCPAGE }, JsonRequestBehavior.AllowGet);
 
            }
        }

我在webform里都是这样写的,但是换到mvc里就有问题了,主要是查询完了加载本地数据的地候,主要是这句:
$('#dgCMSTC').datagrid('load', []);
 $('#dgCMSTC').datagrid('load', data);
这是加载查询回来的本地数据,但是它会向后台再发送两次初始化datagrid的请求,导致查询条件为空,又将全部数据查询出来,不清楚mvc有没有特殊的设置,不知道我说清楚没有。。。。

勇哥哥的主页 勇哥哥 | 初学一级 | 园豆:6
提问于:2015-04-20 16:44
< >
分享
最佳答案
0

发送两次请求与是否是mvc无关,检查一下事件绑定,或者特殊的img标签,或者没有"/"的地址等。

收获园豆:5
| 小虾三级 |园豆:780 | 2015-04-20 22:43

仔细检查了下代码,真的没有发现什么问题...

勇哥哥 | 园豆:6 (初学一级) | 2015-04-21 09:25

搞定了,还是方法写错了,应该是loadData方法,load方法确实会向服务器请求数据,loadData才是加载本地数据,不知道怎么就搞错了,晕死啊.....

勇哥哥 | 园豆:6 (初学一级) | 2015-04-21 10:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册