ASP.NET使用EasyUI-DataGrid + ashx + JQuery Ajax:實現數據的增刪查改,查詢和分頁!


轉自:http://www.cnblogs.com/lt-style/p/3457399.html

數據表:

學生表:學生編號、姓名、性別、班級編號、年齡

班級表:班級編號、班級名稱

開發過程:

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="width: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="width: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM