構建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的後台管理系統(9)-MVC與EasyUI結合增刪改查

來源:互聯網
上載者:User

標籤:

在第八講中,我們已經做到了怎麼樣分頁。這一講主要講增刪改查。第六講的代碼已經給出,裡麵包含了增刪改,大家可以下載下來看下。這講主要是,製作漂亮的工具列,雖然easyui的datagrid已經內建可以設定工具列,我們還是要提取出來,為以後許可權控製做更好的準備。

前端代碼沒有邏輯結果,這也許是我寫代碼以來寫得最輕鬆的,但也是最繁瑣的,因為美工我不是強項,每一次調整都非常的困難,最後我把他調成了這樣了:

看得過去的鼓掌一下。樣式已經包含在附加代碼中了。

大家只要加入以下HTML代碼到index上就可以了

<div class="mvctool"><input id="txtQuery" type="text" class="searchText"><a id="btnQuery" style="float: left;" class="l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text icon-search" style="padding-left: 20px;">查詢</span></span></a><div class="datagrid-btn-separator"></div><a id="btnCreate" style="float: left;" class="l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text icon-add" style="padding-left: 20px;">新增</span></span></a><div class="datagrid-btn-separator"></div><a id="btnEdit" style="float: left;" class="l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text icon-edit" style="padding-left: 20px;">編輯</span></span></a><div class="datagrid-btn-separator"></div><a id="btnDetails" style="float: left;" class="l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text icon-details" style="padding-left: 20px;">詳細</span></span></a><div class="datagrid-btn-separator"></div><a id="btnDelete" style="float: left;" class="l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text icon-remove" style="padding-left: 20px;">刪除</span></span></a><div class="datagrid-btn-separator"></div><a id="btnExport" style="float: left;" class="l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text icon-export" style="padding-left: 20px;">匯出</span></span></a><a id="btnReload" style="float: left;" class="l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text icon-reload" style="padding-left: 20px;">重新整理</span></span></a></div>

  

有能力的朋友再最佳化一下樣式

好,我們用jquery為按鈕添加事件。增、刪、改、查,把匯出和重新整理刪掉吧。沒用到

在index加入以下代碼js代碼

<script type="text/javascript">    //ifram 返回    function frameReturnByClose() {        $("#modalwindow").window(‘close‘);    }    //iframe 返回並重新整理    function frameReturnByReload(flag) {        if (flag)            $("#List").datagrid(‘load‘);        else            $("#List").datagrid(‘reload‘);    }    //輸出資訊    function frameReturnByMes(mes) {        $.messageBox5s(‘提示‘, mes);    }    $(function () {              $("#btnCreate").click(function () {            $("#modalwindow").html("<iframe width=‘100%‘ height=‘98%‘ scrolling=‘no‘ frameborder=‘0‘‘ src=‘/SysSample/Create‘></iframe>");            $("#modalwindow").window({ title: ‘新增‘, width: 700, height: 400, iconCls: ‘icon-add‘ }).window(‘open‘);        });        $("#btnEdit").click(function () {            var row = $(‘#List‘).datagrid(‘getSelected‘);            if (row != null) {                $("#modalwindow").html("<iframe width=‘100%‘ height=‘99%‘  frameborder=‘0‘ src=‘/SysSample/Edit?id=" + row.Id + "&Ieguid=" + GetGuid() + "‘></iframe>");                $("#modalwindow").window({ title: ‘編輯‘, width: 700, height: 430, iconCls: ‘icon-edit‘ }).window(‘open‘);            } else { $.messageBox5s(‘提示‘, ‘請選擇要操作的記錄‘); }        });        $("#btnDetails").click(function () {            var row = $(‘#List‘).datagrid(‘getSelected‘);            if (row != null) {                $("#modalwindow").html("<iframe width=‘100%‘ height=‘98%‘ scrolling=‘no‘ frameborder=‘0‘ src=‘/SysSample/Details?id=" + row.Id + "&Ieguid=" + GetGuid() + "‘></iframe>");                $("#modalwindow").window({ title: ‘詳細‘, width: 500, height: 300, iconCls: ‘icon-details‘ }).window(‘open‘);            } else { $.messageBox5s(‘提示‘, ‘請選擇要操作的記錄‘); }            });        $("#btnQuery").click(function () {            var queryStr = $("#txtQuery").val();            //如果查詢條件為空白預設查詢全部            if (queryStr == null) {                queryStr = "%";            }            $(‘#List‘).datagrid({                url: ‘/SysSample/GetList?queryStr=‘ + encodeURI(queryStr)            });        });        $("#btnDelete").click(function () {            var row = $(‘#List‘).datagrid(‘getSelected‘);            if (row != null) {                $.messager.confirm(‘提示‘, ‘確定刪除‘, function (r) {                        if (r) {                            $.post("/SysSample/Delete?id=" + row.Id, function (data) {                                if (data.type == 1)                                    $("#List").datagrid(‘load‘);                                $.messageBox5s(‘提示‘, data.message);                            }, "json");                        }                    });            } else { $.messageBox5s(‘提示‘, ‘請選擇要操作的記錄‘); }            });    });</script>

  

這是jquery綁定了事件,不知道jquery怎麼用的,穿越回去學習一下選取器和事件
OK代碼很清楚的告訴了我們增刪改要做什麼了。

裡面用到了easyui 的window

所以我們在Index頂部加入一個層來包含彈出window,我們把增加,修改的視圖放在iframe裡面,然後附加到window裡面彈出

<div id="modalwindow" class="easyui-window" data-options="modal:true,closed:true,minimizable:false,shadow:false"></div>

<div class="mvctool">................

關於$.messageBox5s是我擴充easyui的message控制項的結果,擴充如下

/** * 在iframe中調用,在父視窗中出提示框(herf方式不用調父視窗)*/$.extend({    messageBox5s: function (title, msg) {        $.messager.show({            title: title, msg: msg, timeout: 5000, showType: ‘slide‘, style: {                left: ‘‘,                right: 5,                top: ‘‘,                bottom: -document.body.scrollTop - document.documentElement.scrollTop+5            }        });    }});$.extend({    messageBox10s: function (title, msg) {        $.messager.show({            title: title, msg: msg, height: ‘auto‘, width: ‘auto‘, timeout: 10000, showType: ‘slide‘, style: {                left: ‘‘,                right: 5,                top: ‘‘,                bottom: -document.body.scrollTop - document.documentElement.scrollTop + 5            }        });    }});$.extend({    show_alert: function (strTitle, strMsg) {        $.messager.alert(strTitle, strMsg);    }});/** * panel關閉時回收記憶體,主要用於layout使用iframe嵌入網頁時的記憶體流失問題*/$.fn.panel.defaults.onBeforeDestroy = function () {    var frame = $(‘iframe‘, this);    try {        // alert(‘銷毀,清理記憶體‘);        if (frame.length > 0) {            for (var i = 0; i < frame.length; i++) {                frame[i].contentWindow.document.write(‘‘);                frame[i].contentWindow.close();            }            frame.remove();            if ($.browser.msie) {                CollectGarbage();            }        }    } catch (e) {    }};jquery.easyui.plus.js

  

建立jquery.easyui.plus.js放到scripts目錄下,引入即可

//產生唯一的GUIDfunction GetGuid() {var s4 = function () {return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);};return s4() + s4() + s4() + "-" + s4();}

  

編譯預覽一下,點擊下,新增和編輯,好,有效果了

此時我們建立增加,和編輯的action和view

這裡是SysSampleController的代碼

using System.Collections.Generic;using System.Linq;using System.Web.Mvc;using App.Common;using App.IBLL;using App.Models.Sys;using Microsoft.Practices.Unity;namespace App.Admin.Controllers{    public class SysSampleController :Controller    {        /// <summary>        /// 業務層注入        /// </summary>        [Dependency]        public ISysSampleBLL m_BLL { get; set; }        public ActionResult Index()        {            return View();        }        public JsonResult GetList(GridPager pager, string queryStr)        {            List<SysSampleModel> list = m_BLL.GetList(ref pager);            var json = new            {                total = pager.totalRows,                rows = (from r in list                        select new SysSampleModel()                        {                            Id = r.Id,                            Name = r.Name,                            Age = r.Age,                            Bir = r.Bir,                            Photo = r.Photo,                            Note = r.Note,                            CreateTime = r.CreateTime,                        }).ToArray()            };            return Json(json, JsonRequestBehavior.AllowGet);        }        #region 建立        public ActionResult Create()        {            return View();        }        [HttpPost]        public JsonResult Create(SysSampleModel model)        {                if (m_BLL.Create(model))                {                    return Json(1, JsonRequestBehavior.AllowGet);                }                else                {                    return Json(0, JsonRequestBehavior.AllowGet);                }             }        #endregion        #region 修改        public ActionResult Edit(string id)        {            SysSampleModel entity = m_BLL.GetById(id);            return View(entity);        }        [HttpPost]        public JsonResult Edit(SysSampleModel model)        {                           if (m_BLL.Edit(model))                {                    return Json(1, JsonRequestBehavior.AllowGet);                }                else                {                    return Json(0, JsonRequestBehavior.AllowGet);                }                   }        #endregion        #region 詳細        public ActionResult Details(string id)        {            SysSampleModel entity = m_BLL.GetById(id);            return View(entity);        }        #endregion        #region 刪除        [HttpPost]        public JsonResult Delete(string id)        {            if (!string.IsNullOrWhiteSpace(id))            {                if (m_BLL.Delete(id))                {                    return Json(1, JsonRequestBehavior.AllowGet);                }                else                {                                        return Json(0, JsonRequestBehavior.AllowGet);                }            }            else            {                return Json(0, JsonRequestBehavior.AllowGet);            }        }        #endregion            }}SysSampleController

  在建立視圖之前,我們先建立一個模板頁,開啟views下面的Shared建立

<!DOCTYPE html><html><head>    <title>Main</title>    @Styles.Render("~/Content/themes/blue/css")    <script src="@Url.Content("~/Scripts/jquery.min.js")" type="text/javascript"></script>    <script src="@Url.Content("~/Scripts/jquery.form.js")" type="text/javascript"></script>    <script src="@Url.Content("~/Scripts/jquery.easyui.min.js")" type="text/javascript"></script>     <script src="@Url.Content("~/Scripts/jquery.easyui.plus.js")"></script>    @Styles.Render("~/Content/css")    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script></head><body>        @RenderBody()</body></html>

  我們以後的快顯視窗全部要用到這個模版,這個模版頁主要是引入了資料編輯和校正
下面建立Create視圖

@model App.Models.Sys.SysSampleModel@using App.Common;@using App.Models.Sys;@using App.Admin;@{     ViewBag.Title = "建立";    Layout = "~/Views/Shared/_Index_LayoutEdit.cshtml";    }<script type="text/javascript">    $(function () {        $("#btnSave").click(function () {                           $.ajax({                    url: "/SysSample/Create",                    type: "Post",                    data: $("#CreateForm").serialize(),                    dataType: "json",                    success: function (data) {                        if (data == 1) {                            window.parent.frameReturnByMes("成功");                            window.parent.frameReturnByReload(true);                            window.parent.frameReturnByClose()                        }                        else {                            window.parent.frameReturnByMes("失敗");                        }                    }                });        });    });    </script><div class="mvctool bgb">    <a id="btnSave" style="float: left;" class="l-btn l-btn-plain"><span class="l-btn-left"><span class="l-btn-text icon-save" style="padding-left: 20px;">儲存</span></span></a></div>@using (Html.BeginForm("Create", "SysSample", null, FormMethod.Post, new { Id = "CreateForm" })){    @Html.ValidationSummary(true)    <table class="fromEditTable setTextWidth300">        <tbody>            <tr>                <td style="width:100px; text-align:right;">                    @Html.LabelFor(model => model.Id):                </td>                <td style="width:310px">                    @Html.EditorFor(model => model.Id)                </td>                <td>@Html.ValidationMessageFor(model => model.Id)</td>            </tr>            <tr>                <td style="width:100px; text-align:right;">                    @Html.LabelFor(model => model.Name):                </td>                <td>                    @Html.EditorFor(model => model.Name)                </td>                <td>                    @Html.ValidationMessageFor(model => model.Name)                </td>            </tr>            <tr>                <td style="width:100px; text-align:right;">                    @Html.LabelFor(model => model.Age):                </td>                               <td>                    @Html.EditorFor(model => model.Age)                    </td>                <td>                    @Html.ValidationMessageFor(model => model.Age)                </td>            </tr>            <tr>                <td style="width:100px; text-align:right;">                    @Html.LabelFor(model => model.Bir):                </td>                                <td>                    @Html.TextBoxFor(model => model.Bir)                    </td>                <td>                    @Html.ValidationMessageFor(model => model.Bir)                </td>            </tr>                       <tr>                <td style="width:100px; text-align:right;">                    @Html.LabelFor(model => model.Note):                </td>                               <td>                    @Html.EditorFor(model => model.Note)                    </td>                <td>                    @Html.ValidationMessageFor(model => model.Note)                </td>            </tr>            <tr>                <td style="width:100px; text-align:right;">                    @Html.LabelFor(model => model.CreateTime):                </td>                                <td>                    @Html.TextBoxFor(model => model.CreateTime)                                       </td>                <td>                    @Html.ValidationMessageFor(model => model.CreateTime)                </td>            </tr>             <tr>                <td style="width:100px; text-align:right;">                    @Html.LabelFor(model => model.Photo):                </td>                  <td>                      @Html.TextBoxFor(model => model.Photo)                                   </td>                               <td>                    @Html.ValidationMessageFor(model => model.Photo)                </td>            </tr>        </tbody>    </table>}Create

  

下面的太簡單了,修改和詳細自己動手做起來吧。說得太明白東西就沒什麼意思了

  • 給點提示,修改就把建立複製一份,儲存的時候把url指到修改
  • 詳細就把儲存去掉就可以了
  • 查詢,在Controller的GetList增加一個queryStr參數,在BLL判斷是queryStr是否為空白。不為空白就用Linq寫多個where,O了

構建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的後台管理系統(9)-MVC與EasyUI結合增刪改查

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.