Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Entity framework Asp.NETMVC2-jqgrid多搜索示例_Entity Framework_Asp.net Mvc 2_Jqgrid - Fatal编程技术网

Entity framework Asp.NETMVC2-jqgrid多搜索示例

Entity framework Asp.NETMVC2-jqgrid多搜索示例,entity-framework,asp.net-mvc-2,jqgrid,Entity Framework,Asp.net Mvc 2,Jqgrid,我正在用MVC2和实体框架实现jqGrid。我想利用它的多种搜索功能,结合分页/排序以及CRUD交互。网格将由两个表组成,因此搜索功能也需要能够搜索相关表。我目前拥有分页/排序功能,客户端返回控制器端所需的所有搜索过滤器。我正在寻找一个示例,说明如何在实体框架上实现所有不同的搜索操作符,同时仍然支持分页/排序和相关的表搜索 我当前的客户端脚本: $(document).ready(function () { $('#grid').jqGrid({ colNames: ['

我正在用MVC2和实体框架实现jqGrid。我想利用它的多种搜索功能,结合分页/排序以及CRUD交互。网格将由两个表组成,因此搜索功能也需要能够搜索相关表。我目前拥有分页/排序功能,客户端返回控制器端所需的所有搜索过滤器。我正在寻找一个示例,说明如何在实体框架上实现所有不同的搜索操作符,同时仍然支持分页/排序和相关的表搜索

我当前的客户端脚本:

$(document).ready(function () {
    $('#grid').jqGrid({
        colNames: ['TypeId', 'Type', 'CR Active', 'Category'],
        colModel: [
                    { name: 'TYPE_ID', index: 'TYPE_ID', hidden: true, search: false },
                    { name: 'TYPE', index: 'TYPE', sortable: true, hidden: false },
                    { name: 'CR_ACTIVE', index: 'CR_ACTIVE', align: 'right', sortable: true, hidden: false },
                    { name: 'description', index: 'description', align: 'right', sortable: true, hidden: false }
                    ],
        pager: jQuery('#pager'),
        sortname: 'TYPE',
        rowNum: 10,
        rowList: [10, 20, 50],
        sortorder: "asc",
        width: 600,
        height: 250,
        datatype: 'json',
        caption: 'Available Types',
        viewrecords: true,
        mtype: 'GET',
        jsonReader: {
            root: "rows",
            page: "page",
            total: "total",
            records: "records",
            repeatitems: false,
            userdata: "userdata"
        },
        url: "/Type/GetData"
    }).navGrid('#pager', { view: false, del: true, add: true, edit: true },
       {}, // default settings for edit
       {}, // default settings for add
       {}, // delete instead that del:false we need this
       {closeOnEscape: true, multipleSearch: true, closeAfterSearch: true }, // search options
       {} /* view parameters*/
     );

});
我的控制器:

public JsonResult GetData(GridSettings grid)
{
        using (IWE dataContext = new IWE())
        {
            var query = from host in dataContext.LKTYPE
                        select new
                        {
                            TYPE_ID = host.TYPE_ID,
                            TYPE = host.TYPE,
                            CR_ACTIVE = host.CR_ACTIVE,
                            description = host.VWEPICORCATEGORY.description
                        };


            ////sorting
            query = query.OrderBy(grid.SortColumn, grid.SortOrder);

            //count
            var count = query.Count();

            //paging
            var data = query.Skip((grid.PageIndex - 1) * grid.PageSize).Take(grid.PageSize).ToArray();

            //converting in grid format
            var result = new
            {
                total = (int)Math.Ceiling((double)count / grid.PageSize),
                page = grid.PageIndex,
                records = count,
                rows = data.ToArray()
            };

            return Json(result, JsonRequestBehavior.AllowGet);
        }

}
GridSettings定义为:

[ModelBinder(typeof(GridModelBinder))]
public class GridSettings
{
    public bool IsSearch { get; set; }
    public int PageSize { get; set; }
    public int PageIndex { get; set; }
    public string SortColumn { get; set; }
    public string SortOrder { get; set; }

    public Filter Where { get; set; }
}
因此,我将从客户机获得所有分页/排序和搜索子句

如果有人能举个好例子来说明如何做到这一点,我将不胜感激。我逐步介绍了代码项目示例,但它只有几个可能的搜索运算符的示例,当您打开其他运算符时,查询将中断。更不用说它似乎不支持在网格相关表上进行搜索。这个站点有一个很好的例子,但是服务器端的工作是用PHP和MySQL完成的。我不知道这一点,但局部搜索也是一种可能性,如果它将做什么,我需要它

提前感谢,,
比利

这应该能帮助其他寻找同样东西的人:

我不确定相关表搜索有什么问题——当然这只是简单地使用linq查询联接

 var invoices = from i in db.Invoices
         join c in customer on c.Id = i.Id  // inner join related table
         join ljic in db.InvoiceCalcs 
         on i.Id equals ljic.Id into ljict // left join related table
         from ic in ljict.DefaultIfEmpty()  
         where (i.CustomerId == id && c.Name == "Jones")  // where clause (i.e. search phrase for 2 related tables)

如果问题是dynamic linq中列的名称,则在列前面加上表名,即Customer.name==Jones等。另一种方法是使用SQL视图连接表并查询表,这也会对性能有好处。

阅读我关于此主题的系列文章:Craig,事实上,我看过你的帖子,从中得到了很多信息。谢谢分享!然而,我没有看到jqGrid的多搜索功能的示例,正如您在上面的链接中看到的那样。我错过什么了吗?谢谢你抽出时间。