zoukankan      html  css  js  c++  java
  • JQuery-EasyUI DataGrid CRUD

    ASP.NET使用EasyUI-DataGrid + ashx + JQuery Ajax:实现数据的增删查改,查询和分页!

    数据表:

    学生表:学生编号、姓名、性别、班级编号、年龄

    班级表:班级编号、班级名称

    开发过程:

    1.下载EasyUI的开发包

    2.引用相关文件:

    <link href="/CSS/easyui.css" rel="stylesheet" type="text/css" />
        <link href="/CSS/demo.css" rel="stylesheet" type="text/css" />
        <link href="/CSS/icon.css" rel="stylesheet" type="text/css" />
        <script src="/Packages/jquery-1.6.4.min.js" type="text/javascript"></script>
        <script src="/Packages/jquery.easyui.min.js" type="text/javascript"></script>
        <script src="/Packages/EditStuInfo.js" type="text/javascript"></script>
        <script src="/Packages/easyui-lang-zh_CN.js" type="text/javascript"></script>

    3.引用相关图片文件:

    image

    要注意的是Css文件中的图片路路径,如果是使用默认的路径,那么图片文件应该放在css所在文件的同级目录,如果是其它目录,则要修改css中的图片路径

    4.建立表格、对话框、及按钮:

    <!--Search Begin-->
        根据班级查询学生信息:
        <select id="classNum_Search"></select>&nbsp;&nbsp;
        <a href="#" class="easyui-linkbutton" onclick="searchStuByClassNum()">查询</a>
        <br />
        <!--Search End-->
    
        <!--StuInfo_Table Begin-->
        <table id="dg" title="学生信息管理" class="easyui-datagrid" style="700px;height:365px"
                url="/ashx/StudentInfo.ashx?Action=Load"
                toolbar="#toolbar" pagination="true"
                rownumbers="true" fitColumns="true" singleSelect="true">
            <thead>
                <tr>
                    <th field="Id" width="50">ID</th>
                    <th field="StuNum" width="50">学生编号</th>
                    <th field="StuName" width="50">姓名</th>
                    <th field="ClasName" width="50">班级</th>
                    <th field="StuGender" width="50">性别</th>
                    <th field="StuAge" width="50">年龄</th>
                </tr>
            </thead>
        </table>
        <div id="toolbar">
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newUser()">添加</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editUser()">编辑</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyUser()">删除</a>
        </div>
        <!--StuInfo_Table End-->
    
        <!--StuInfo_Dialog Begin-->
        <div id="dlg" class="easyui-dialog" style="400px;height:280px;padding:10px 20px"
                closed="true" buttons="#dlg-buttons">
            <div class="ftitle">学生信息</div>
            <form id="fm" method="post" novalidate action="">
                <div class="fitem">
                    <label>学生编号:</label>
                    <input name="StuNum" class="easyui-validatebox"/>
                </div>
                <div class="fitem">
                    <label>姓名:</label>
                    <input name="StuName" class="easyui-validatebox" required="true"/>
                </div>
                <div class="fitem">
                    <label>班级:</label>
                    <select name="ClassNum" id="ClassNum" ></select>
                </div>
                <div class="fitem">
                    <label>性别:</label>
                    <input id="rdoMan" name="StuGender" type="radio" value="1" /><input id="rdoWuman" name="StuGender" type="radio" value="0" /></div>
                <div class="fitem">
                    <label>年龄:</label>
                    <input name="StuAge" class="easyui-validatebox" required="true" />
                </div>
            </form>
        </div>
        <!--StuInfo_Dialog End-->
    
        <div id="dlg-buttons">
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveUser()">保存</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')">取消</a>
        </div>
    </div>

    5.对数据操作的JS代码:

    var url;
    
    //添加
    function newUser() {
        $('#dlg').dialog('open').dialog('setTitle', '添加学生信息');
        $('#fm').form('clear');
    
        //获取最大的学生ID并加1
        $.get("/ashx/StudentInfo.ashx?Action=GetMaxNum", function (data) {
            $("#fm input[name='StuNum']").val(data).attr("readonly", "readonly");
        });
    
        //获取班级信息
        $.get("/ashx/StudentInfo.ashx?Action=GetClassInfo", function (data) {
            $("#ClassNum").html("").append(data);
            $("#ClassNum").eq(0).attr("selected", "selected");
        });
    
        //默认性别男被选中
        $("#fm input[name='StuGender']").eq(0).attr("checked", "checked");
    
        url = '/ashx/StudentInfo.ashx?Action=Save';
    }
    
    //更新
    function editUser() {
        var row = $('#dg').datagrid('getSelected');
        if (row) {
            $('#dlg').dialog('open').dialog('setTitle', '编辑学生信息');
            $('#fm').form('load', row);
    
            //获取和设置班级的状态
            $.get("/ashx/StudentInfo.ashx?Action=GetClassInfo", function (data) {
                $("#ClassNum").html("").append(data);
                $("#ClassNum option").each(function () {
                    if ($(this).text() == row.ClasName) {
                        $(this).attr("selected", "selected");
                    }
                });
    
                //.eq(0).attr("selected", "selected");
            });
    
            //获取和设置性别的选中状态
            if (row.StuGender == "男") {
                $("#fm input[name='StuGender']").eq(0).attr("checked", "checked");
            }
            else {
                $("#fm input[name='StuGender']").eq(1).attr("checked", "checked");
            }
            url = '/ashx/StudentInfo.ashx?Action=Update&id=' + row.Id;
    
        }
    }
    
    //保存
    function saveUser() {
        $('#fm').form('submit', {
            url: url,
            onSubmit: function () {
                return $(this).form('validate');
            },
            success: function (result) {
                if (result == "False") {
                    $.messager.show({
                        title: '友情提示',
                        msg: 'Sorry, 出错了,请重试 :('
                    });
                } else {
                    $('#dlg').dialog('close');        // close the dialog
                    $('#dg').datagrid('reload');    // reload the user data
                }
            }
        });
    }
    
    //删除
    function destroyUser() {
        var row = $('#dg').datagrid('getSelected');
        if (row) {
            $.messager.confirm('友情提示', '确定要删除数据吗,删除后将无法找回?', function (r) {
                if (r) {
                    $.post('/ashx/StudentInfo.ashx', { "Action": "Delete", "id": row.Id }, function (result) {
                        if (result == "True") {
                            $('#dg').datagrid('reload');    // reload the user data
                        } else {
                            $.messager.show({    // show error message
                                title: '错误提示!',
                                msg: "服务器错误,请刷新重试 :("
                            });
                        }
                    });
                }
            });
        }
    }
    
    //根据班级查询学生信息
    function searchStuByClassNum() {
        var classNum = $("#classNum_Search").val();
        $('#dg').datagrid({
            url: "/ashx/StudentInfo.ashx?Action=SearchStu",
            queryParams: { "classNum": classNum }
        })
    };
    
    //加载班级信息到查询列表中
    $(function () {
        $.get("/ashx/StudentInfo.ashx?Action=GetClassInfo", function (data) {
            $("#classNum_Search").html("").append(data);
            $("#classNum_Search option").eq(0).attr("selected", "selected");
        });
    })

    6.后台数据处理文件 ashx

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Configuration;
    using System.Text;
    
    namespace TestStuMS.Ashx
    {
        /// <summary>
        /// StudentInfo 的摘要说明
        /// </summary>
        public class StudentInfo : IHttpHandler
        {
           public BLL.Students bllStu = new BLL.Students();
           public BLL.StuClass bllClass = new BLL.StuClass();
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                
                //获取请求的动作
                string action = context.Request["Action"];
                if (string.IsNullOrEmpty(action)) return;
    
                switch (action)
                {
                    case "Save"://添加
                        context.Response.Write(AddStuInfo(context));
                        break;
                    case "Delete"://删除
                        context.Response.Write(DeleteStuInfo(context));
                        break;
                    case "Update"://更新
                        context.Response.Write(UpdateStuInfo(context));
                        break;
                    case "Load"://加载与分页
                        context.Response.Write(BuildPager(context));
                        break;
                    case "GetMaxNum"://获取新学生编号
                        context.Response.Write(GetMaxNum()+1);
                        break;
                    case "GetClassInfo"://获取班级信息
                        context.Response.Write(GetClassInfo(context));
                        break;
                    case "SearchStu"://根据班级获取学生信息
                        context.Response.Write(GetStuInfoByClassNum(context));
                        break;
                }
    
            }
    
            #region 方法
    
            //添加
            private bool AddStuInfo(HttpContext context)
            {
                //stuNum:1201009
                //stuName:星期三
                //classNum:1201
                //stuGender:男
                //stuAge:20
    
                Model.Students model= new Model.Students();
                model.StuNum = int.Parse(context.Request["StuNum"]);
                model.ClassNum = int.Parse(context.Request["ClassNum"]);
                model.StuName = context.Request["StuName"];
                model.StuGender = context.Request["StuGender"]=="1"?true:false;
                model.StuAge = int.Parse(context.Request["StuAge"]);
    
                return bllStu.Add(model);//如果是成功则返回True否则返回False
            }
    
            //更新
            private bool UpdateStuInfo(HttpContext context)
            {
                Model.Students model = new Model.Students();
                model.Id = int.Parse(context.Request["id"]);
                model.StuNum = int.Parse(context.Request["StuNum"]);
                model.ClassNum = int.Parse(context.Request["ClassNum"]);
                model.StuName = context.Request["StuName"];
                model.StuGender = context.Request["StuGender"] == "1" ? true : false;
                model.StuAge = int.Parse(context.Request["StuAge"]);
    
                return bllStu.Update(model);
            }
    
            //删除
            private bool DeleteStuInfo(HttpContext context)
            {
                int Id = int.Parse(context.Request["id"]);
                return bllStu.Delete(Id);
            }
    
            //分页
            private string BuildPager(HttpContext context)
            {
                int pageIndex = int.Parse(context.Request["page"]);
                int pageSize = int.Parse(context.Request["rows"]);
    
                List<Model.Students> stuList = bllStu.GetModelList("");
                List<Model.StuClass> classList = bllClass.GetModelList("");
    
                //获取学生信息
                var stuInfo = stuList.Join(classList,
                    s => s.ClassNum,
                    c => c.ClassNum,
                    (s, c) => new { s.Id, s.StuNum, s.StuName, c.ClasName, StuGender = s.StuGender == true ? "" : "", s.StuAge }
                    );
    
                //查询分页数据
                var pageData = stuInfo.Where(s => s.Id > 0)
                    .OrderByDescending(s => s.Id)
                    .Skip((pageIndex-1) * pageSize)
                    .Take(pageSize).ToList();
    
                var data = new { total = stuInfo.Count(), rows = pageData };
    
                //序列化成JSON格式数据
                System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
    
                return jss.Serialize(data);
    
    
            }
    
            //获取班级信息
            private string GetClassInfo(HttpContext context)
            {
               List< Model.StuClass> classList =  bllClass.GetModelList("");
               StringBuilder sb = new StringBuilder();
    
               foreach (var stuClass in classList)
               {
                   sb.Append("<option value='" + stuClass.ClassNum + "'>" + stuClass.ClasName + "</option>");
               }
    
               return sb.ToString();
            }
    
            //获取学生最大ID(以便新添加的ID保持唯一)
            private int GetMaxNum()
            {
               return bllStu.GetMaxStuNum();
            }
    
            //根据班级获取学生信息
            private string GetStuInfoByClassNum(HttpContext context)
            { 
                int classNum = int.Parse(context.Request["classNum"]);
    
                List<Model.Students> stuList = bllStu.GetModelList("ClassNum=" + classNum);
                List<Model.StuClass> classList = bllClass.GetModelList("");
    
                //根据班级获取学生信息
                var stuInfo = stuList.Join(classList,
                    s => s.ClassNum,
                    c => c.ClassNum,
                    (s, c) => new {s.ClassNum, s.Id, s.StuNum, s.StuName, c.ClasName, StuGender = s.StuGender == true ? "" : "", s.StuAge }
                    ).Where(i=>i.ClassNum==classNum);
    
                //序列化成JSON格式数据
                System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
    
                return jss.Serialize(stuInfo.ToList());
    
            }
    
            #endregion
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }

    7.效果图:

    image

  • 相关阅读:
    Java 传递参数时,传递一个变量快还是传递一个实体类?
    13 设计模式
    12 反射
    11.多线程&&并发
    10.输入输出
    9.异常Exception
    7.正则表达式
    5.数组
    6.常见对象
    上传本地项目到Github
  • 原文地址:https://www.cnblogs.com/lt-style/p/3457399.html
Copyright © 2011-2022 走看看