1. 程式人生 > >基於bootstrap table分頁資料及行內編輯和匯出資料(一)

基於bootstrap table分頁資料及行內編輯和匯出資料(一)


第一步,匯入相應的css和js檔案

     <link href="~/Content/bootstrap.min.css" rel="stylesheet" />


    <!-----swich按鈕需要的css檔案-->
    <link href="~/Content/Swich/bootstrap-switch.min.css" rel="stylesheet" />


    <!-----表格需要的css檔案-->
    <link href="~/Content/bootstrap-table.min.css" rel="stylesheet" />
    <!-----行內編輯需要的css檔案-->
    <link href="~/Content/bootstrap-editable.css" rel="stylesheet" />
    <script src="~/Content/jquery.min.js"></script>
    <script src="~/Content/bootstrap.min.js"></script>
    <!----匯出表格的外掛-->
    @*<script src="~/Content/bootstrap-table-export.min.js"></script>
        <script src="//rawgit.com/hhurz/tableExport.jquery.plugin/master/tableExport.js"></script>*@
    <!-----編輯檔案需要的指令碼-->
    <script src="//rawgit.com/vitalets/x-editable/master/dist/bootstrap3-editable/js/bootstrap-editable.js"></script>
    <script src="~/Content/bootstrap-editable.js"></script>


    <script src="~/Content/bootstrap-table.min.js"></script><!--表格需要的指令碼--->
    <script src="~/Content/bootstrap-table-zh-CN.min.js"></script>


    <!------laydate日期外掛-->
    <script src="~/Content/laydate/laydate.js"></script>


    <!------lswichjs外掛-->
    <script src="~/Content/Swich/bootstrap-switch.min.js"></script>


    @*
        
        注意 使用表格外掛時圖示會有顯示不出來的情況
        只需要把fonts資料夾複製一份放在根目錄下即可


    *@


佈局頁面:

<body>
    <div>
       <!-----表格-->
        <table id="tb_departments" class=" table table-bordered table-striped" style="text-align:center;"></table>


        <!-----頭部按鈕-->
        <div id="toolbar">
            <button class="btn btn-primary" type="button"><i class="glyphicon glyphicon-plus"></i> 新增</button>


        </div>




        @*彈出層*@
        <div class="modal fade" id="myModal" tabindex="-1" role="dialog"
             aria-labelledby="myModalLabel" aria-hidden="true" style="position:absolute;top:20%;left:10%;">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close"
                                data-dismiss="modal" aria-hidden="true">
                            &times;
                        </button>
                        <h4>
                            你想幹什麼??
                        </h4>
                    </div>
                    <div class="modal-body">
                        是否確定操作?
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-success"
                                data-dismiss="modal" id="qx">
                            關閉
                        </button>
                        <a class="btn btn-success" id="save">
                            確定
                        </a>
                    </div>
                </div><!-- /.modal-content -->
            </div>




        </div>



    </div>
</body>

jq部分

  <script>
        var id;//用於接收id
        var type;//用於判斷編輯的列


     
        $(function () {
    laydate.skin('dahong');//載入面板 dahong是面板名,在laydate>skins中
           
         
        
            //重新載入表格資料
            $("#btnsearch").click(function () {
                //獲取選中行的id/資料
                $.map($("#tb_departments").bootstrapTable('getSelections'), function (row) {
                    id = row.id;
                });
                var txt = $("#txt").val();
                var reg = (/\w+[@{Html.Raw("@");}]{1}\w+[.]\w+/);   //驗證郵箱、
                if (reg.test(txt)) {
                    $("#tb_departments").bootstrapTable('refresh');//重新載入資料
                } else {


                    alert("郵箱不合法");


                }
            });






            $table = $("#tb_departments");
            $("#tb_departments").bootstrapTable({


                url: '@Url.Action("AjaxPage")',
                method: 'get',


                toolbar: "#toolbar",//按鈕容器
                striped: true,//使表格帶有條紋
                pagination: true,//顯示底部分頁工具欄
                pageSize: 5,
                cache: false,//是否啟用快取
                pagenumber: 1,
                pageList: [10, 15, 20],
                idField: 'id',//標識主鍵
                showToggle: false,   //是否顯示詳細檢視和列表檢視的切換按鈕
                cardView: false,//設定為True時顯示名片(card)佈局
                showColumns: true, //顯示隱藏列
                showRefresh: true,  //顯示重新整理按鈕
                singleSelect: true,//複選框只能選擇一條記錄
                search: false,//是否顯示搜尋框
                toolbarAlign: "left",//工具欄對齊方式
                searchOnEnterKey: false,//回車搜尋
                clickToSelect: true,//點選行選中單選/複選
                sidePagination: "server",           //分頁方式:client客戶端分頁,server服務端分頁(*)
                queryParams: queryParams, //引數
                showRefresh: true,//是否顯示重新整理按鈕
                minimumCountColumns: 2,//最少允許顯示的行數
                cardView: false,                    //是否顯示詳細檢視
                detailView: false,                  //是否顯示父子表
                //showExport: true,                     //是否顯示匯出
                //exportDataType: "basic",              //basic', 'all', 'selected'.
            


                columns: [
                    { checkbox: true, width: "5%", title: "選擇", align: 'center' },
                    {
                        field: 'id', title: '編號', width: '15%', align: 'center'
                    },
                          {
                              field: 'email', title: '郵箱', width: '15%', align: 'center',
                              formatter: function (value) {
                                  return '<span class="sort">' + (value == null ? "123" : value) + '</span>';
                              },
                              events: {
                                  //點選事件
                                  'click  .sort': function (e, value, row, index) {
                                      id = row.id;
                                      type = "email";
                                  }
                              }
                          },
                                {
                                    field: 'pwd', title: '密碼', width: '15%', align: 'center',
                                    formatter: function (value) {
                                        return '<span class="sort">' + (value == null ? "123" : value) + '</span>';
                                    },
                                    events: {
                                        //點選事件
                                        'click  .sort': function (e, value, row, index) {
                                            id = row.id;
                                            type = "pwd";
                                        }
                                    }
                                },


                                //切換按鈕
                                  {
                                      field: 'IsShow',
                                      title: '首頁顯示',
                                  width:'10%',
                                      formatter: function (value, row) {
                                          var check = "checked";
                                          if (!value) {
                                              check = "";
                                          }


                                          var kongjian =
                 '<input class="switch" classid=' + row.Classid + ' type="checkbox" ' + check + '  />';
                                          return kongjian;
                                      }
                                  },






                                  {
                                      field: 'logintime', title: '登入時間', width: '15%', align: 'center',
                                      formatter: function (value) {
                                       
                                          return ' <input name="time"     class="inline laydate-icon" value="' + (value == null ? "請選擇日期" : value) + '" id="time"   style="width:240px;">';
                                      
                                      },
                                      events: {
                                          //點選事件
                                          'click  #time': function (e, value, row, index) {
                                              laydate({ istime: true, format: "YYYY-MM-DD hh:mm:ss" });//時間外掛的事件
                                              id = row.id;
                                              type = "logintime";
                                     
                                          }
                                      }
                                  },
                    {
                        field: 'ss', title: '操作', align: 'center',
                        formatter: function (value, row, index) {
                            return [
                     '<button class="edit btn btn-success btn-sm" type="button">',
                    '<i class="glyphicon glyphicon-edit"></i>&nbsp修改',
                    '</button>  ',
                    "<button class='remove btn btn-success btn-sm' type='button'>",
                    '<i class="glyphicon glyphicon-remove"></i>&nbsp刪除',
                    '</button>  ',
                            ].join('');
                        },
                        events: {//事件


                            'click .remove': function (e, value, row, index) {//formatter中點選刪除按鈕事件
                                //機制:click表示點選,.remove表示class名
                                $table.bootstrapTable('check', index);
                                getDelete(row.id);


                            },
                          
                        }


                    },


                ],


                //   /行內編輯的程式碼
                //注意  要使用該方法 field列中必須用
               //   formatter: function (value) {
                //    return '<span class="sort">' + parseInt(value == null ? "123" : value) + '</span>';
                //      }這種方式繫結資料


                onLoadSuccess: function () {//載入成功顯示底部的綠線,表示可以編輯
                    $('.switch').bootstrapSwitch({
                        size: 'large',//設定包裹按鈕容器的大小,可選null, 'mini', 'small', 'normal', 'large'
                        onColor: "success",//開關按鈕左邊的顏色
                        offColor: "warning",//開關按鈕右邊邊的顏色 可選值 'primary', 'info', 'success', 'warning', 'danger', 'default'
                        onText: "點我啊",//開關按鈕左邊的文字
                        offText: "別點我",
                        labelText: "點選切換",//開關按鈕中間的Label文字
                    });//swich按鈕的切換


                    //按鈕個改變事件開始
                    $('.switch').on('switchChange.bootstrapSwitch', function (event, state) {
                   //這裡寫對應的邏輯程式碼;state表示開關的狀態
                        alert("當前狀態"+state);
                    });


                    //序號
                    $(".sort").editable({
                        type: 'text',
                        pk: 1,
                        title: '修改資料',
                        placement: 'bottom',
                        validate: function (value) {
                            var sort = $.trim(value);//修改的資料
                            if (value==""||value==null) {
                                return '請輸入資訊';
                            }
                            $.ajax({
                                url: '@Url.Action("EditList")',
                                data: {
                                    pwd: sort,
                                    id: id,
                                   type:type
                                },
                                success: function (data) {
                                    if (data === 'true') {
                                        alert("修改成功");
                                        $table.bootstrapTable('refresh');//修改成功後重新載入資料
                                    } else {
                                      alert("修改失敗");
                                    }
                                },
                                error: function () {
                               alert("伺服器錯誤");
                                }
                            });
                            return '';
                        }
                    });
                },


                formatLoadingMessage: function () {//載入事件
                    return "請稍等,正在載入中...";
                },
                formatNoMatches: function () {  //沒有匹配的結果
                    return '無符合條件的記錄';
                },
                 });


            //返回的引數列表
            function queryParams(params) {
                var temp = {   //這裡的鍵的名字和控制器的變數名必須一直,這邊改動,控制器也需要改成一樣的
                    pagesize: params.limit,   //頁面大小
                    pageindex: params.offset / params.limit + 1,  //頁碼
                    Title: $("#txt").val(),


                };


                return temp;
            }


            //刪除方法、
            function getDelete(Getid) {


                if (Getid == "" || Getid == null) {//判斷傳回的id是否有資料
                    alert("請選擇行");
                } else {
                    $("#myModal").modal('show');//顯示模態框


                    $("#save").click(function () {//當確定按鈕被點選執行事件


                        $.ajax({
                            url: "@Url.Action("Delete")",
                            data: { getid: Getid },
                            type: 'post',
                            success: function (data) {
                                if (data == "true") {
                               $("#myModal").modal('hide');//刪除成功後關閉模態框
                  
                                    $table.bootstrapTable('refresh');//刪除後重新重新整理表格


                                }
                            },
                            error: function (error) {
                                alert("error");
                            }


                        });


                    });
                    $("#qx").click(function () {//點選取消按鈕關閉模態框
                        $("#myModal").modal('hide');
                    });




                }
            }


            $("#addbtn").click(function () {
                $("#AddmyModal").modal('show');
            });
            $("#add").click(function () {
                var email = $("#firstname").val(), pwd = $("#lastname").val();
                if (email==""||pwd=="") {
                    alert("請輸入資訊");
                } else {
                    $.ajax({
                        url: '@Url.Action("Add")',
                        type: 'post',
                        data: { email: email, pwd: pwd },
                        success: function (data) {
                            
                            if (data == "true") {
                                alert("新增成功");
                                $("#tb_departments").bootstrapTable('refresh');//重新整理
                                $("#AddmyModal").modal('hide');//關閉模態框
                            } else {
                                alert("新增失敗");


                            }
                        }, error: function (error) {
                            alert('error');
                        }


                    });
                }
            });


        })
    </script>

後臺用mvcpage分頁實現

 匯入名稱空間

using Webdiyer.WebControls.Mvc;

     //顯示資料
        public ActionResult AjaxPage(int pageindex,int pagesize=5) {


            string title = Request["Title"];
          
            var ss=db.m_user.ToList();
              PagedList<m_user> list;
            if (string.IsNullOrWhiteSpace(title))
            {
                list= db.m_user.OrderByDescending(n => n.id).ToList().ToPagedList(pageindex, pagesize);
            }
            else
            {
                list = db.m_user.Where (n=>n.email.Contains(title)).OrderByDescending(n => n.id).ToList().ToPagedList(pageindex, pagesize);
            }
       
            //返回的json資料
            var obj = new
            {
                total = ss.Count(),
                rows = list.Select(c=>new  {
                id=c.id,
              email=c.email,
          pwd= c.pwd,
            logintime= c.logintime.ToString()
                })
            };
            return Json(obj, JsonRequestBehavior.AllowGet);
        }
        //刪除的方法
        public ActionResult Delete(string Getid)
        {
            int id = int.Parse(Getid);
            m_user m = db.m_user.Find(id);
            db.m_user.Remove(m);
            if (db.SaveChanges()>0)
            {
                return Content("true");
            }
            else
            {
                return Content("false");
            }
          
        
        
        }


        //修改的方法
        public ActionResult EditList()
        {
            var s = Request["pwd"].ToString();
            int id =int.Parse( Request["id"].ToString());
            var type = Request["type"].ToString();
            m_user m = db.m_user.Where(n=>n.id==id).FirstOrDefault();
            if (type=="email")
            {
                m.email = s;
            } if (type=="pwd")
            {
                m.pwd = s;
            } if (type=="logintime")
            {
                m.logintime =DateTime.Parse(s);
            }


            if (db.SaveChanges()>0)
            {
                return Content("true");
            }
            else
            {
                return Content("false");
            }
          
        }