datatables.js 簡單使用--彈出編輯框或添加數據框


內容:選中某一條記錄,彈出編輯框

環境:asp.net mvc ,  bootstrap

顯示效果:

    

  代碼: 至於怎么弄多選框,在上一篇博客里已經有說明。

  主要用到了bootstrap的模態窗,下面代碼是從網上找的,主要分3部分,標題header,內容body和底部footer

 1 <div class="modal fade" id="myModal" tabindex="-1" role="dialog" 
 2    aria-labelledby="myModalLabel" aria-hidden="true">
 3    <div class="modal-dialog">
 4       <div class="modal-content">
 5          <div class="modal-header">
 6             <button type="button" class="close" 
 7                data-dismiss="modal" aria-hidden="true">
 8                   &times;
 9             </button>
10             <h4 class="modal-title" id="myModalLabel">
11                模態框(Modal)標題
12             </h4>
13          </div>
14          <div class="modal-body">
15             內容
16          </div>
17          <div class="modal-footer">
18             <button type="button" class="btn btn-default" 
19                data-dismiss="modal">關閉
20             </button>
21             <button type="button" class="btn btn-primary">
22                提交
23             </button>
24          </div>
25       </div><!-- /.modal-content -->
26 </div>

我主要是對上面的代碼進行了封裝,把它放到了一個js里。

 

//btn-modify 這個是編輯按鈕的class名
$('.btn-modify').click(function () {
    if ($(".checkchild:checked").length > 1)
    {
        alert("一次只能修改一條數據");
        return;
    }
    var id = $(".checkchild:checked").val();
    var initData = {
        "appendId": "modalRef",//加到哪里去
        "modalId": "myModal",
        "title": "修改菜單",
        "formId": "formEdit", //form的ID
        "loadUrl": "/Menus/Edit", //如果不從頁面加載,寫成"null" 
        "loadParas": { "ID": id },     //向loadUrl傳的數據
        "postUrl": "/BasicManage/Edit", //提交add的url
        "close": reloadDt, //關閉彈出窗后調用的方法
        "cols": ""   //[ {"displayName":"菜單名","fieldName":"Name"}]   
    };
    whr.setModal(initData);
});

    大體說明:我用js拼接了bootstrap的模態框,然后對它的body部分進行填充。

                  對body部分填充分2種方式: 1. 加載另一個頁面(編輯時用這個比較好),2. 拼接一個form表單(主要是添加用)

     主要傳的參數是 initData  .

         "appendId": "modalRef" 把模態框的代碼附加到哪里去 <div id="modalRef"></div>

         "modalId": "myModal"  模態框代碼的ID

         "title": "修改菜單"   模態框標題

        "formId": "formEdit", form表單的ID,至於為什么加一個form表單,是因為Jquery取數據比較方便,$("#formEdit").serialize()

        "loadUrl": "/Menus/Edit", //如果不從頁面加載,寫成"null"

                      如果寫成"null", 就會從cols中取數據

         "loadParas": { "ID": id }, //向loadUrl傳的數據,加載一個頁面時需要傳的數據,比如要取一條記錄的數據要傳給后台ID

         "postUrl": "/BasicManage/Edit", //點擊提交按鈕時要提交到哪里,提交數據使用的 $("#formEdit").serialize(),會把form表單里有name的都提交到后台

         "close": reloadDt, //關閉彈出窗后調用的方法,提交數據后,點模態框的關閉按鈕時應該刷新表格的數據

                 //關閉彈出窗后調用的方法
                function reloadDt() {           
                    //刷新
                    _dataTables.ajax.reload();
                }

          "cols": "" //數據格式:  [ {"displayName":"菜單名","fieldName":"Name"}] 

                       會拼接成    菜單名:<input type="text" name="Name"  />

      whr.setModal(initData);  調用拼接模態框的js方法

     代碼如下:

 1 var whr = {};
 2 
 3 whr.setModal = function (data) {
 4     var modal = "<div class='modal fade' id='" + data.modalId + "' tabindex='-1' role='dialog' aria-labelledby='myModalLabel' aria-hidden='true'> <div class='modal-dialog'> <div class='modal-content'> <div class='modal-header'> <button type='button' class='close'  data-dismiss='modal' aria-hidden='true'> </button><h4 class='modal-title' id='myModalLabel'>" + data.title + "</h4> </div> <div class='modal-body'> </div> <div class='modal-footer'><button id='btn-close" + data.modalId + "' type='button' class='btn btn-default'  data-dismiss='modal'> 關閉 </button> <button type='button' id='btn-" + data.modalId + "' class='btn btn-primary'> 提交</button> </div></div></div> </div>";
 5     $("#" + data.appendId).empty();
 6     $("#" + data.appendId).append(modal);
 7 
 8     //加載一個頁面的內容
 9     if (data.loadUrl != "null") {
10         var form2 = "<form id='" + data.formId + "'>  </form>";
11         $("#" + data.modalId + " .modal-body").append(form2);
12         $("#" + data.formId).load(data.loadUrl, data.loadParas);
13     }
14     else {
15         var form2 = "<form id='" + data.formId + "' action='" + data.postUrl + "' method='post' >";
16         for (var i = 0; i < data.cols.length; i++) {
17             form2 += " <div > <label  >" + data.cols[i]["displayName"] + "</label> <input type='text' class='form-control' name='" + data.cols[i]["fieldName"] + "' placeholder=''> </div>";
18         }
19         form2 += "</form>";
20         $("#" + data.modalId + " .modal-body").append(form2);
21     }
22     $("#" + data.modalId).modal('show');
23     $("#btn-" + data.modalId).click(function () 
24     {
25         $.post(data.postUrl, $("#" + data.formId).serialize(), function (data) {
26             if (data == "ok") {
27                 alert("添加成功");
28             }
29             else {
30                 alert("添加失敗");
31             }
32         });
33 
34     });
35 
36     $("#btn-close" + data.modalId).click(function () {
37         data.close();
38     });
39 }
View Code

 

    注意 其中的一段代碼 ,post的返回值我寫死了,可以修改一下上面封裝的js,改成自定義的

1 $.post(data.postUrl, $("#" + data.formId).serialize(), function (data) {
2             if (data == "ok") {
3                 alert("添加成功");
4             }
5             else {
6                 alert("添加失敗");
7             }
8         });

    后台代碼:

      public string AddMenu(Menu menu)
        {
            MenuDAO Dao = new MenuDAO();
            bool flag = Dao.AddMenu(menu);
            return flag?"ok":"error";
        }

  


免責聲明!

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



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