• ASP.NET MVC and jqGrid 学习笔记 3-如何从数据库获得数据


    实际应用中,大部分都是从数据库里获得数据,所以先建立一个数据库,Database first 或者Code first都可以,这里用Code first。

    一、Model

       public class Member
        {
            [Key]
            public int No { get; set; }
    
            [Required]
            [MaxLength(5)]
            public string Name { get; set; }
    
            [MaxLength(200)]
            public string Email { get; set; }
    
            [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
            public DateTime? CreatedOn { get; set; }
        }

    再创建一个数据上下文类:

    using System.Data.Entity;
    
    namespace HelloJqGrid.Models
    {
        public class MyContext:DbContext
        {
            public MyContext():base("name=DefaultConnection"){}
    
            public DbSet<Guestbook> Guestbooks { get; set; }
            public DbSet<Member> Members { get; set; }
        }
    }

    好了!按理说就是这样就算Model建好了。但是我们的数据库在哪里呢?摸索后发现,还必须得把它“激活”才能看得到。怎么激活?用刚创建的2个类来自动生成CRUD,然后添加一些数据,保存后,在App_Data文件夹里就看到了(点击显示所有文件,刷新)。

    生成CRUD的过程:

    新建一个Controller

    就是刚才创建的2个类。

    点击添加按钮后就自动生成了CRUD的页面。

    书归正传。

    二、View

    @{
        ViewBag.Title = "ShowServerData";
    }
    
    <h2>ShowServerData</h2>
    <script type="text/javascript">
        $(function () {
            jQuery("#grid").jqGrid({
                url: "/Home/GetServerData",
                datatype: "json",           
                mtype:"get",
                //colNames: ['No', 'Name', 'Client'],
                colModel: [
                    {label:'Number', name: 'No', index: 'No',  60, sorttype: "int" },
                    {label:'Name', name: 'Name', index: 'Name',  90 },
                    {label:'Email', name: 'Email', index: 'Email',  100 },
                    {label:'Created On', name: 'CreatedOn', index: 'CreatedOn',  100 }
                ],
                caption: "jqGrid data",
                rowNum: 5,
                pager: "pager",
                viewrecords: true,
                 500, height: "auto",
                jsonReader:{repeatitems: false}
            });
        });
    </script>
    
    <table id="grid"></table>
    <div id="pager"></div>

    三、Controller

    在Controller中写2个action,一个是显示页面的,一个是从数据库获得数据的。

         public ActionResult ShowServerData()
            {
                return View();
            }
            public ActionResult GetServerData(int? page, int? rows,string sidx,string sord)
            {
                HelloJqGrid.Models.MyContext db = new Models.MyContext();
                var query = db.Members.ToList();
    
                //jqgrid的参数
                int pageNum = page.HasValue ? page.Value : 1;//当前显示哪一页
                int pageSize = rows.HasValue ? rows.Value : 10;  //每一页显示多少条记录
                int totalRecords = query.Count();//总记录数
                int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);//总页数
                var jsonData = new
                {
                    total = totalPages,
                    page = pageNum,
                    records = totalRecords,
                    rows = query.Skip((pageNum - 1) * pageSize).Take(pageSize)//分页
                };
    
                return Json(jsonData, JsonRequestBehavior.AllowGet);
            }

    其实和从本地获得数据代码差不多,只是用:

     HelloJqGrid.Models.MyContext db = new Models.MyContext();
     var query = db.Members.ToList();

    来作为rows的数据。

    完了。

    完了!对,Run 一下就显示数据了,但是!这个不能排序!

    说到排序,好像就一下子牵涉到了很多的东西,什么动态linq,表达式树等等。居然很复杂!下回再说。

  • 相关阅读:
    UVA 221
    A Typical Homework(学生信息管理系统)
    追踪电子表格中的单元格
    浮点数!!!(摘)
    poj 3158kickdown
    循环小数 UVa202
    Unix is 命令
    W
    V
    完美世界 字符串倒置输出
  • 原文地址:https://www.cnblogs.com/ibgo/p/3481015.html
Copyright © 2020-2023  润新知