1. 程式人生 > >【ssm個人部落格專案實戰08】部落格的分頁顯示以及模糊查詢,刪除。

【ssm個人部落格專案實戰08】部落格的分頁顯示以及模糊查詢,刪除。

前言

我在這裡給大家道個歉,樓主因為畢業季拍畢業照 找工作事情比較多,所以部落格實戰給拉下來了,對不起大家,這只是暫時的拉下,樓主是不會放棄的。

1、上篇回顧

在上一節中我們是完成了部落格的回臺部分,現在我需要在前臺拿到回臺傳來的資料並且給以顯示出來。
不知道大家還記得我們在部落格類別管理裡面,easyui的datagrid用法嗎?在這裡我們繼續使用datagrid 只不過多了一個模糊查詢。
接下來給大家看看實際效果

部落格分頁顯示

我們主要顯示的有部落格的 標題 釋出時間 部落格型別
然後工具欄多了一個關於部落格標題的模糊查詢

2、具體編碼

2.1、首先 我們需要新建一個blogManage.jsp

然後同樣的匯入我們的公共標頭檔案

<%@include file=”./common/head.jspf”%>

這樣我們easyui所用到的一些js或者css就載入進來了

2.2、頁面佈局

接下我們就要完成這個分頁的佈局,根據easyui的api手冊提供的datagrid的幾種使用形式,我們選擇html+js的那種方式

<table id="dg" title="部落格管理" class="easyui-datagrid" fitColumns="true" pagination="true"
    url="${blog}/admin/blog/listBlog.do"
toolbar="#tb">
<thead> <tr> <th field="cb" checkbox="true" align="center"></th> <th field="id" width="20" align="center">編號</th> <th field="title" width="200">標題</th> <th field="releaseDate" width
="100" align="center">
釋出日期</th> <th field="blogType" width="100" align="center" formatter="formatBlogType">部落格型別</th> </tr> </thead> </table> <div id="tb"> <div> 標題 <input type="text" id="s_title" size="20" onkeydown="if(event.keyCode==13) searchBlog()"> <a href="javascript:searchBlog()" class="easyui-linkbutton" iconCls="icon-search" plain="true">搜尋</a> <a href="javascript:deleteBlog()" class="easyui-linkbutton" iconCls="icon-remove" plain="true">刪除</a> <a href="javascript:openBlogModifyTab()" class="easyui-linkbutton" iconCls="icon-edit" plain="true">修改</a> <a href="javascript:reload()" class="easyui-linkbutton" iconCls="icon-reload" plain="true">重新整理</a> </div> </div>

大家可能對easyui的部分屬性不懂,這裡我簡單解釋一下

1、在table中table 就是整個用與顯示的 分頁資料的一個便籤
* url 就是資料的請求的介面 這裡就是我們後端controller中寫好的listBlog那個方法的RequestMapping
* toolbar就是我們上方工具條的id
* field整個就是json資料中對應的屬性名稱
* formatter就是對資料顯示之前呼叫的格式化的方法名

2、在id=tb的div中 這一塊就是分頁顯示上方的工具條
這裡就沒有什麼好解釋的了 就是一個div裡面一個input 四個a標籤分別對應 模糊查詢輸入框 模糊查詢按鈕 刪除 修改 重新整理

2.3 js方法實現

從上面可以看出,我們需要實現6個js方法 下面我逐個解釋一下每一個方法的作用
* formatBlogType() 這個方法主要是格式化我們的部落格型別 因為後端傳過來的是一個BlogType物件 但是我只需要顯示BlogType的typeName屬性就可以,所以這裡需要進行格式處理
* searchBlog()這個方法就是通過input中輸入的值 往後端傳送查詢請求查詢資料
* deleteBlog()這個方法就是刪除部落格
* openBlogModifyTab()這個方法就是開啟我們部落格的修改頁面
* reload()這個方法就是重新整理頁面 重新載入資料

方法都介紹完了 接下來就是具體編碼的實現了

 /**
     * 格式化部落格型別獲取其型別名稱
     * @param val
     * @param row
     * @returns {string}
     */
    function formatBlogType(val, row) {
        return val.typeName;
    }

    /**
     * 按照title查詢部落格資訊
     */
    function searchBlog() {
        $("#dg").datagrid("load", {
            "title":$("#s_title").val()
        });
    }

    /**
     * 刪除部落格資訊
     * 可以多選
     */
    function deleteBlog() {
        //獲取選中要刪除的行
        var selectedRows = $("#dg").datagrid("getSelections");
        //判斷是否有選擇的行
        if(selectedRows.length == 0) {
            $.messager.alert("系統提示", "請選擇要刪除的資料");
            return;
        }
        //定義選中 選中id陣列
        var idsStr = [];
        //迴圈遍歷將選中行的id push進入陣列
        for(var i = 0; i < selectedRows.length; i++) {
            idsStr.push(selectedRows[i].id);
        }
        //將陣列安裝,連線成字串
        var ids = idsStr.join(","); //1,2,3,4
        //提示是否確認刪除
        $.messager.confirm("系統提示", "<font color=red>您確定要刪除選中的"+selectedRows.length+"條資料麼?</font>", function(r) {
            //確定刪除
            if(r) {
                //傳送ajax請求
                $.post("${blog}/admin/blog/delete.do",
                        {ids: ids}, function(result){
                            if(result.success) {
                                $.messager.alert("系統提示", "資料刪除成功!");
                                $("#dg").datagrid("reload");
                            } else {
                                $.messager.alert("系統提示", "資料刪除失敗!");
                            }
                        }, "json");
            }
        });
    }
    /**
     *開啟修改部落格介面
     */
    function openBlogModifyTab() {

    }
    /**
     * 重新載入資料
     */
    function reload() {
        $("#dg").datagrid("reload");
    }

在這裡我簡單講解一下

formatBlogType(val,row)
val 對應屬性的值
row對應行的資訊

datagrid比較常用也比較複雜,它有其中有load,reload這三個方法,它們都有相同的功能,都是載入資料的,但又有區別。

load方法,比如我已經定義一個datagrid的id為dg,那這個方法的使用方式為
(“#dg”).datagrid(“load”,{ });  
  它的引數為一個json物件,裡面寫的是你要傳輸的引數的鍵值對,呼叫這個方法來載入資料的時候,它傳給後臺的分頁資訊是從第一頁開始的。  
  所以我們模糊查詢的時候需要把數值作為查詢引數給傳遞過去  
  reload方法,使用方式也跟load的一樣
(“#grid”).datagrid(“reload”,{ });
看它的名字應該就可以知道它的做用了,沒錯,它跟load一樣有載入資料功能,也一樣的傳引數,但它傳給後臺的分佈資訊是當前的頁碼,就是實現重新整理當前頁的功能。

3、測試與小結

image.png

image.png

在這一節我們完成了部落格的分頁顯示模糊查詢等功能,但是其中的修改部落格以及寫部落格我們放到了下一節,所以修改部落格那個方法我們暫時也沒有實現。