datatable實例教程

来源:http://www.cnblogs.com/liujiaxian/archive/2017/01/21/6336809.html
-Advertisement-
Play Games

網站的後臺,多數是需要使用datatable來展示數據的,因為datatable的功能比較強大,可以更好的使用。 引用css html代碼 js代碼 服務端代碼 ...


網站的後臺,多數是需要使用datatable來展示數據的,因為datatable的功能比較強大,可以更好的使用。

引用css

<link href="../../static/assets/advanced-datatable/media/css/demo_page.css" rel="stylesheet" />
<link href="../../static/assets/advanced-datatable/media/css/demo_table.css" rel="stylesheet" />

html代碼

<!--篩選條件-->
        <div class="col-sm-12" style="margin-top: 10px;">
            <input type="text" class="form-control" id="txtmobile" placeholder="手機號碼" style="display: inline-block; width: 200px;"/>
          <input type="text" class="form-control" id="txtrealname" placeholder="真實姓名" style="display: inline-block; width: 200px;"/>
            <input type="text" class="form-control Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" onclick="WdatePicker()" placeholder="登錄時間開始" id="txtlogintimestart" style="display: inline-block; width: 200px; height: 32px;"/>-
            <input type="text" class="form-control Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" onclick="WdatePicker()" placeholder="登錄時間結束" id="txtlogintimeend" style="display: inline-block; width: 200px; height: 32px;"/>
            <button type="button" class="btn btn-primary " style="display: inline-block;" onclick="articlesearch()">搜索</button>
        </div>

        <!--Table-->
        <div class="col-sm-12">
            <table class="table table-hover" id="hidden-table-info">
                <thead>
                    <tr>
                        <th class="hidden-phone">編號</th>
                        <th class="hidden-phone">手機號碼</th>
                        <th class="hidden-phone">真實姓名</th>
                        <th class="hidden-phone">支付寶</th>
                        <th class="hidden-phone">支付寶二維碼</th>
                        <th class="hidden-phone">微信</th>
                        <th class="hidden-phone">微信二維碼</th>
                        <th class="hidden-phone">開戶銀行</th>
                        <th class="hidden-phone">銀行卡號</th>
                        <th class="hidden-phone">開戶人</th>
                        <th class="hidden-phone">賬戶餘額</th>
                        <th class="hidden-phone">添加時間</th>
                        <th class="hidden-phone">操作</th>
                    </tr>
                </thead>
                <tbody></tbody>
            </table>
        </div>

js代碼

 <script type="text/javascript" src="../../static/assets/advanced-datatable/media/js/jquery.dataTables.js"></script>
    <script type="text/javascript">
        var oTable;
        var mobile;
        var logintimestart;
        var logintimeend;
        var realname;
        //創建表格
        $(document).ready(function () {
            oTable = $('#hidden-table-info').dataTable({
                "aaSorting": [],
                "bProcessing": true,
                "bServerSide": true,
                "serverSide": true,
                "aLengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]],
                "sPaginationType": "full_numbers",
                "bFilter": false,
                "bSort": true,
                "sAjaxSource": "../../handler/workerHandler.aspx",
                "fnServerData": function (sSource, aoData, fnCallback) {
                    aoData.push({ name: "action", value: "GetWorkerData" });
                    aoData.push({ name: "mobile", value: $("#txtmobile").val() });
                    aoData.push({ name: "realname", value: $("#txtrealname").val() });
                    aoData.push({ name: "logintimestart", value: $("#txtlogintimestart").val() });
                    aoData.push({ name: "logintimeend", value: $("#txtlogintimeend").val() });
                    $.ajax({
                        "dataType": 'json',
                        "type": "POST",
                        "url": sSource,
                        "data": aoData,
                        "success": fnCallback
                    });
                }, "aoColumnDefs": [{
                    "aTargets": [-1],
                    "mRender": function (data, type, full) {
                        return '<button class="btn btn-primary btn-xs" title="點擊編輯標題" onclick="btn_workeredit('   data   ',$(this))" style="margin-bottom:10px;">編輯</button><br/><button class="btn btn-primary btn-xs" title="點擊刪除" onclick="btn_worderdelete('   data   ')">刪除</button>';
                    },
                }],
                "aoColumns": [
                       { "mData": "workerID" },
                       { "mData": "mobile" },
                       { "mData": "realName" },
                       { "mData": "alipay" },
                       {
                           "mData": "alipayQRCode", "bSortable": false, "fnRender": function (obj) {
                               var data = obj.aData.alipayQRCode;
                               if (data != "" && data != null) {
                                   return '<a href="'   data   '" target="_blank" title="點擊查看原圖"><img src="'   data   '" style="width:80px;height:80px;" /></a>';
                               } else {
                                   return "";
                               }
                           }
                       },
                       { "mData": "wechat" },
                       {
                           "mData": "wechatQRCode", "bSortable": false, "fnRender": function (obj) {
                               var data = obj.aData.wechatQRCode;
                               if (data!=""&&data!=null) {
                                   return '<a href="'   data   '" target="_blank" title="點擊查看原圖"><img src="'   data   '" style="width:80px;height:80px;" /></a>';
                               } else {
                                   return "";
                               }
                           }
                       },
                       { "mData": "bank" },
                       { "mData": "bankCardNumber" },
                       { "mData": "bankCardName" },
                       { "mData": "fund" },
                       {
                           "mData": "addTime", "fnRender": function (obj) {
                               var date = obj.aData.addTime;
                               return DataTable_TimeFormat(date);
                           }
                       },
                       { "mData": "workerID", "bSortable": false },
                ],
            });



            $("#hidden-table-info_length").append("&nbsp;<button type='button' class='btn btn-danger' onclick='btn_reset()'>重置查詢條件</button>&nbsp;<button type='button' class='btn btn-danger' onclick='btn_workeradd()'>添加工作人員</button>");

        });

        //時間格式化
        function DataTable_TimeFormat(date) {
            if (date != "" && date != null) {
                var reg = /\./;//用來驗證數字,包括小數的正則
                if (reg.test(date)) {
                    date = date.split('.')[0];
                }
                return date.replace("T", " ");
            } else {
                return "";
            }
        }

        //搜索
        function articlesearch(sort) {
            mobile = $("#txtmobile").val();
            realname = $("#txtrealname").val();
            logintimestart = $("#txtlogintimestart").val();
            logintimeend = $("#txtlogintimeend").val();
            $("#hidden-table-info").dataTable().fnPageChange('first', true);
        }

        //重置搜索
        function btn_reset() {
            $("#txtmobile").val("");
            $("#txtrealname").val("");
            $("#txtlogintimestart").val("");
            $("#txtlogintimeend").val("");

            mobile = null;
            realname = null;
            logintimestart = null;
            logintimeend = null;

            $("#hidden-table-info").dataTable().fnPageChange('first', true);
        }
    </script>

服務端代碼

private object data = "";
        private object result = "";
        private int sEcho, iDisplayStart, iDisplayLength, sortid, count;
        private bool sorttype;
        protected void Page_Load(object sender, EventArgs e)
        {
            string act = null;
            try
            {
                act = Request["action"].ToString();
                sEcho = Convert.ToInt32(Request["sEcho"]);
                iDisplayStart = Convert.ToInt32(Request["iDisplayStart"]);//開始記錄數
                iDisplayLength = Convert.ToInt32(Request["iDisplayLength"]);//結束記錄數
                if (!int.TryParse(Request["iSortCol_0"], out sortid))//按哪列來排序
                {
                    sortid = -1;
                }
                sorttype = Request["sSortDir_0"] == "asc" ? false : true;//升序還是降序

                if (!string.IsNullOrEmpty(act))
                {
                    switch (act)
                    {
                        case "GetWorkerData": GetWorkerData(); break;//獲取工作人員信息
                    }
                }

                result = data;
            }
            catch (Exception ex)
            {
                result = ReturnMsg(Enum_return.失敗, ex.Message, null);
            }

            Response.Write(result);
        }
        #region 獲取工作人員
        private void GetWorkerData()
        {
            //按條件搜索
            string mobile = Request["mobile"];//手機號碼
            string realname = Request["realname"];//用戶類型
            string logintimestart = Request["logintimestart"];//登錄時間開始
            string logintimeend = Request["logintimeend"];//登錄時間結束

            //獲取所有數據
            List<yw_houseAgent_worker> list = null;
            IQueryable<yw_houseAgent_worker> result = Ctx.yw_houseAgent_worker;

            #region 排序區分
            switch (sortid)
            {
                case 0:
                    if (sorttype) result = result.OrderByDescending(c => c.workerID);
                    else result = result.OrderBy(c => c.workerID);
                    break;
                case 1:
                    if (sorttype) result = result.OrderByDescending(c => c.mobile);
                    else result = result.OrderBy(c => c.mobile);
                    break;
                case 2:
                    if (sorttype) result = result.OrderByDescending(c => c.realName);
                    else result = result.OrderBy(c => c.realName);
                    break;
                case 3:
                    if (sorttype) result = result.OrderByDescending(c => c.alipay);
                    else result = result.OrderBy(c => c.alipay);
                    break;
                case 5:
                    if (sorttype) result = result.OrderByDescending(c => c.wechat);
                    else result = result.OrderBy(c => c.wechat);
                    break;
                case 7:
                    if (sorttype) result = result.OrderByDescending(c => c.bank);
                    else result = result.OrderBy(c => c.bank);
                    break;
                case 8:
                    if (sorttype) result = result.OrderByDescending(c => c.bankCardNumber);
                    else result = result.OrderBy(c => c.bankCardNumber);
                    break;
                case 9:
                    if (sorttype) result = result.OrderByDescending(c => c.bankCardName);
                    else result = result.OrderBy(c => c.bankCardName);
                    break;
                case 10:
                    if (sorttype) result = result.OrderByDescending(c => c.fund);
                    else result = result.OrderBy(c => c.fund);
                    break;
                case 11:
                    if (sorttype) result = result.OrderByDescending(c => c.addTime);
                    else result = result.OrderBy(c => c.addTime);
                    break;
                default:
                    if (sorttype) result = result.OrderByDescending(c => c.workerID);
                    else result = result.OrderBy(c => c.workerID);
                    break;
            }
            #endregion


            if (!string.IsNullOrEmpty(mobile) || !string.IsNullOrEmpty(realname) || !string.IsNullOrEmpty(logintimestart) || !string.IsNullOrEmpty(logintimeend)) //搜索情況
            {
                #region 搜索情況
                if (mobile.Trim().Length > 0)//手機號碼
                {
                    result = result.Where(c => c.mobile.Contains(mobile));
                }
                if (realname.Trim().Length > 0)//姓名
                {
                    result = result.Where(c => c.realName.Contains(realname));
                }
                if (logintimestart.Trim().Length > 0 && logintimeend.Trim().Length > 0)//搜索查詢時間
                {
                    DateTime bstart = Convert.ToDateTime(logintimestart);
                    DateTime bend = Convert.ToDateTime(logintimeend);
                    result = result.Where(c => c.addTime >= bstart && c.addTime <= bend);
                }
                #endregion
            }

            count = result.Where(c => c.serialID == CurrentSerialID && c.isDelete == false).Count();
            list = result.Where(c => c.serialID == CurrentSerialID && c.isDelete == false).Skip(iDisplayStart).Take(iDisplayLength).ToList();



            string str = SerializeTableData(sEcho, count, list);
            Response.Write(str);
            Response.End();
        }
        #endregion




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • "ABP入門系列目錄——學習Abp框架之實操演練" 完成了任務清單的增刪改查,咱們來講一講必不可少的的分頁功能。 首先很慶幸ABP已經幫我們封裝了分頁實現,實在是貼心啊。 來來來,這一節咱們就來捋一捋如何使用ABP的進行分頁吧。 一、分頁請求DTO定義 數據傳輸對象(Data Transfer Ob ...
  • 我們知道開機自啟動程式如果在用戶不登錄的情況下是不啟動的,但是服務類程式是可以跨過用戶登錄啟動的,例如IIS服務,SQL服務。如果我們已經寫好了桌面應用程式,又希望他開機自啟動,那就需要藉助系統服務在未登錄的時候打開程式。 創建系統服務 在VS中創建Windows服務: ![image_1b6vq6 ...
  • 大家都知道,現在和以前比起來,互聯網行業、軟體行業已經天差地別了。現在處處都在搞信息化建設,人人都知道互聯網思維。這樣的信息化時代,對於軟體開發者、對於軟體開發公司來說,是一個巨大的機遇。 在門外漢看來,軟體開發是機遇大、成本低,只要叫幾個程式員,就能搞出個軟體公司來。但是,事實情況是這個樣子嗎?本 ...
  • ASP.NET的FileUpload控制項可用於上傳文件到伺服器。HoverTreeTop新增了一個“閱圖”功能,圖片就是用FileUpload上傳的。閱圖功能查看:http://hovertree.com/top/htimg/這裡要說明的是上傳圖片限定文件名和文件大小等代碼。文件上傳功能使用用戶控制項 ...
  • 很多情況下我們需要獲取外網的IP地址,一般用自帶的方法獲取到的都是不准確,往往獲取到的是內網的IP地址,所以需要採用外部網站介面來獲取。 代碼 通過訪問第三方介面來獲取真實的ip地址 ...
  • 開始學習mvc開髮網站的時候,看了傳智博客的視頻教程,其中學習了一個和牛逼的框架,開始激動的深入學習,學完後卻發現其實那套框架太重並不適合一些中小型的網站開發,並且也使用導航屬性關聯外鍵,導致打開網站的速度非常緩慢,最快也要8s以上,所有之後總結如下。 原來框架結構 EF實體關係 由於框架太過於笨重 ...
  • 這裡採用的是.net的一個引用NReco.Recommender.dll,這是一個國外電影網站推薦系統衍生而來的,有興趣的可以到他們的官網看看。 以圖書商城為例 MVC 構造行為數據 首先需要對資料庫進行設計,增加一張用戶的行為數據表,記錄用戶訪問網站的行為,例如商城的一般記錄瀏覽的商品和購買過的商 ...
  • 根據以前的做法是拼接sql語句,這會增加維護成本,因為sql語句里的內容不會報錯,所以在使用ef的時候必須要拋棄拼接sql語句的習慣。 構建實例 構建搜索條件 參數過濾 很多情況下查詢到的結果並不能滿足我們的需要,還需要進行一些處理,這裡需要用linq ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...