ソースを参照

Fix #33: add switchable cloumn option.

zhixin 11 年 前
コミット
420ac0bc49
3 ファイル変更14 行追加8 行削除
  1. 3 3
      docs/examples.html
  2. 1 0
      index.html
  3. 10 5
      src/bootstrap-table.js

+ 3 - 3
docs/examples.html

@@ -328,15 +328,15 @@
                     <h1 id="show-columns-table">Show Columns Table</h1>
                     <h1 id="show-columns-table">Show Columns Table</h1>
                 </div>
                 </div>
                 <div class="bs-example">
                 <div class="bs-example">
-                    <table data-toggle="table" data-url="data3.json" data-height="246" data-show-columns="true" data-id-field="id">
+                    <table data-toggle="table" data-url="data3.json" data-height="246" data-show-columns="true" data-id-field="id" data-minimun-count-columns="3">
                         <thead>
                         <thead>
                         <tr>
                         <tr>
                             <th data-field="state" data-radio="true"></th>
                             <th data-field="state" data-radio="true"></th>
-                            <th data-field="name">Name</th>
+                            <th data-field="name" data-switchable="false">Name</th>
                             <th data-field="price">Price</th>
                             <th data-field="price">Price</th>
                             <th data-field="column1">Columns1</th>
                             <th data-field="column1">Columns1</th>
                             <th data-field="column2" data-visible="false">Columns2</th>
                             <th data-field="column2" data-visible="false">Columns2</th>
-                            <th data-field="column3">Columns3</th>
+                            <th data-field="column3" data-switchable="false">Columns3</th>
                             <th data-field="column4" data-visible="false">Columns4</th>
                             <th data-field="column4" data-visible="false">Columns4</th>
                         </tr>
                         </tr>
                         </thead>
                         </thead>

+ 1 - 0
index.html

@@ -7,5 +7,6 @@
 <script>
 <script>
     location.replace('docs' + location.hash);
     location.replace('docs' + location.hash);
 </script>
 </script>
+<input checked="disabled">
 </body>
 </body>
 </html>
 </html>

+ 10 - 5
src/bootstrap-table.js

@@ -128,6 +128,7 @@
         sortable: false,
         sortable: false,
         order: 'asc', // asc, desc
         order: 'asc', // asc, desc
         visible: true,
         visible: true,
+        switchable: true,
         formatter: undefined,
         formatter: undefined,
         sorter: undefined
         sorter: undefined
     };
     };
@@ -344,6 +345,7 @@
             html = [],
             html = [],
             timeoutId = 0,
             timeoutId = 0,
             $keepOpen,
             $keepOpen,
+            $switchable,
             $search;
             $search;
 
 
         this.$toolbar = this.$container.find('.fixed-table-toolbar').html('');
         this.$toolbar = this.$container.find('.fixed-table-toolbar').html('');
@@ -367,11 +369,12 @@
                 if (column.radio || column.checkbox) {
                 if (column.radio || column.checkbox) {
                     return;
                     return;
                 }
                 }
-                var checked = column.visible ? ' checked="checked"' : '';
+                var checked = column.visible ? ' checked="checked"' : '',
+                    disabled = column.switchable ? '' : ' disabled="disabled"';
 
 
                 html.push(sprintf('<li>' +
                 html.push(sprintf('<li>' +
-                    '<label><input type="checkbox" value="%s"%s> %s</label>' +
-                    '</li>', i, checked, column.title));
+                    '<label><input type="checkbox" value="%s"%s%s> %s</label>' +
+                    '</li>', i, checked, disabled, column.title));
             });
             });
             html.push('</ul>',
             html.push('</ul>',
                 '</div>');
                 '</div>');
@@ -382,10 +385,12 @@
             $keepOpen.find('li').off('click').on('click', function (event) {
             $keepOpen.find('li').off('click').on('click', function (event) {
                 event.stopImmediatePropagation();
                 event.stopImmediatePropagation();
             });
             });
-            $keepOpen.find('input').off('click').on('click', function () {
+            $switchable = $keepOpen.find('input:enabled');
+            $switchable.off('click').on('click', function () {
                 var $this = $(this),
                 var $this = $(this),
-                    $items = $keepOpen.find('input').prop('disabled', false);
+                    $items = $keepOpen.find('input');
 
 
+                $switchable.prop('disabled', false);
                 that.options.columns[$this.val()].visible = $this.prop('checked');
                 that.options.columns[$this.val()].visible = $this.prop('checked');
                 that.initHeader();
                 that.initHeader();
                 that.initBody();
                 that.initBody();