2016-07-26 103 views
0

我正在使用数据表向其中填充数据。要求是要导出这些数据。用户可以一次导出“选定的行”或“全部”数据。我已经使用了数据表导出Excel功能,该功能创建按钮两个“导出全部”按钮和“导出选择”,导出数据。导出所有工作正常,但是当我使用datatable的功能来选择使用“select:true”的行时,我必须使用CTRL按钮来选择多行,并且它工作正常并导出数据,但我不希望这,所以我在table.tr上创建了一个click事件,它将选中的类添加到TR中,TR选择该行,但是在选择该行后,当我导出数据时,没有任何导出,则该excel为空。可能是什么问题,“select:true”会将选中的类添加到TR中,并且我还将添加的类添加到TR上,但是为什么数据不会导出,任何人都可以对此有所了解。我还创建了一个小提琴:Datatable Fiddle 我的代码:在Datatable中单击选择行并将所选数据导出为Excel

<table id="example" cellspacing="0" width="100%" class="display row-border nowrap table-striped responsive-utilities jambo_table"> 
    <thead> 
     <th>Name</th> 
     <th>Company</th> 
     <th>Office Phone</th> 
     <th>Country</th> 
     <th>Action</th> 
    </thead> 
    <tbody> 
     <tr> 
      <td>Test 1</td> 
      <td class="dt-center">1</td> 
      <td class="dt-center">1</td> 
      <td class="dt-center">United Kingdom</td> 
      <td class="dt-center not-exported">Edit Button</td> 
     </tr> 
     <tr> 
      <td>Test 2</td> 
      <td class="dt-center">2</td> 
      <td class="dt-center">2</td> 
      <td class="dt-center">United Kingdom</td> 
      <td class="dt-center not-exported">Edit Button</td> 
     </tr> 
     <tr> 
      <td>Test 3</td> 
      <td class="dt-center">3</td> 
      <td class="dt-center">3</td> 
      <td class="dt-center">United Kingdom</td> 
      <td class="dt-center not-exported">Edit Button</td> 
     </tr> 
    </tbody> 
</table> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#example').DataTable({ 
      "lengthMenu": [5, 10, 50, 100], 
      "pageLength": 20, 
      "scrollX": true, 
      dom: 'Bfrtip', 
      buttons: [ 
      { 
       extend: 'excelHtml5', 
       text: 'Export All', 
       exportOptions: { 
        columns: ':visible:not(.not-exported)' 
       } 
      }, 
      { 
       extend: 'excelHtml5', 
       text: 'Export selected', 
       exportOptions: { 
        columns: ':visible:not(.not-exported)', 
        modifier: { 
         selected: true 
        } 
       } 
      }, 
      'colvis' 
     ], 
     // select: true 
    }); 

    $('#example tbody').on('click', 'tr', function() { 
     $(this).toggleClass('selected'); 
    }); 
    }); 
</script> 
+0

你测试的类实际上得到正确的元素上设置(和它必须工作方式)?如果我正确理解jquery和js,$(this)可能不是您所期望的... – Jakumi

+0

@Jakumi是的,课程已添加到TR中,我已经检查过它。你能告诉我这里有什么错误吗?(这个) – Mukesh

回答

1

试试:

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
<link href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css" rel="stylesheet" type="text/css"/> 
<script src='https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js'></script> 
<script src='https://cdn.datatables.net/buttons/1.2.1/js/dataTables.buttons.min.js'></script> 
<script src='//cdn.datatables.net/buttons/1.2.1/js/buttons.flash.min.js'></script> 
<script src='//cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js'></script> 
<script src='//cdn.rawgit.com/bpampuch/pdfmake/0.1.18/build/pdfmake.min.js'></script> 
<script src='//cdn.rawgit.com/bpampuch/pdfmake/0.1.18/build/vfs_fonts.js'></script> 
<script src='//cdn.datatables.net/buttons/1.2.1/js/buttons.html5.min.js'></script> 
<script src='//cdn.datatables.net/buttons/1.2.1/js/buttons.print.min.js'></script> 
<script src='https://cdn.datatables.net/select/1.2.0/js/dataTables.select.min.js'></script> 
<table id="example" class="display nowrap" cellspacing="0" width="100%"> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Position</th> 
      <th>Office</th> 
      <th>Age</th> 
      <th>Start date</th> 
      <th>Salary</th> 
     </tr> 
    </thead> 
    <tfoot> 
     <tr> 
      <th>Name</th> 
      <th>Position</th> 
      <th>Office</th> 
      <th>Age</th> 
      <th>Start date</th> 
      <th>Salary</th> 
     </tr> 
    </tfoot> 
    <tbody> 
     <tr> 
      <td>Tiger Nixon</td> 
      <td>System Architect</td> 
      <td>Edinburgh</td> 
      <td>61</td> 
      <td>2011/04/25</td> 
      <td>$320,800</td> 
     </tr> 
     <tr> 
      <td>Garrett Winters</td> 
      <td>Accountant</td> 
      <td>Tokyo</td> 
      <td>63</td> 
      <td>2011/07/25</td> 
      <td>$170,750</td> 
     </tr> 
     <tr> 
      <td>Ashton Cox</td> 
      <td>Junior Technical Author</td> 
      <td>San Francisco</td> 
      <td>66</td> 
      <td>2009/01/12</td> 
      <td>$86,000</td> 
     </tr> 
     <tr> 
      <td>Cedric Kelly</td> 
      <td>Senior Javascript Developer</td> 
      <td>Edinburgh</td> 
      <td>22</td> 
      <td>2012/03/29</td> 
      <td>$433,060</td> 
     </tr> 
     <tr> 
      <td>Airi Satou</td> 
      <td>Accountant</td> 
      <td>Tokyo</td> 
      <td>33</td> 
      <td>2008/11/28</td> 
      <td>$162,700</td> 
     </tr> 
     <tr> 
      <td>Brielle Williamson</td> 
      <td>Integration Specialist</td> 
      <td>New York</td> 
      <td>61</td> 
      <td>2012/12/02</td> 
      <td>$372,000</td> 
     </tr> 
     <tr> 
      <td>Herrod Chandler</td> 
      <td>Sales Assistant</td> 
      <td>San Francisco</td> 
      <td>59</td> 
      <td>2012/08/06</td> 
      <td>$137,500</td> 
     </tr> 
     <tr> 
      <td>Rhona Davidson</td> 
      <td>Integration Specialist</td> 
      <td>Tokyo</td> 
      <td>55</td> 
      <td>2010/10/14</td> 
      <td>$327,900</td> 
     </tr> 
     <tr> 
      <td>Colleen Hurst</td> 
      <td>Javascript Developer</td> 
      <td>San Francisco</td> 
      <td>39</td> 
      <td>2009/09/15</td> 
      <td>$205,500</td> 
     </tr> 
     <tr> 
      <td>Sonya Frost</td> 
      <td>Software Engineer</td> 
      <td>Edinburgh</td> 
      <td>23</td> 
      <td>2008/12/13</td> 
      <td>$103,600</td> 
     </tr> 
     <tr> 
      <td>Jena Gaines</td> 
      <td>Office Manager</td> 
      <td>London</td> 
      <td>30</td> 
      <td>2008/12/19</td> 
      <td>$90,560</td> 
     </tr> 
     <tr> 
      <td>Quinn Flynn</td> 
      <td>Support Lead</td> 
      <td>Edinburgh</td> 
      <td>22</td> 
      <td>2013/03/03</td> 
      <td>$342,000</td> 
     </tr> 
     <tr> 
      <td>Charde Marshall</td> 
      <td>Regional Director</td> 
      <td>San Francisco</td> 
      <td>36</td> 
      <td>2008/10/16</td> 
      <td>$470,600</td> 
     </tr> 
     <tr> 
      <td>Haley Kennedy</td> 
      <td>Senior Marketing Designer</td> 
      <td>London</td> 
      <td>43</td> 
      <td>2012/12/18</td> 
      <td>$313,500</td> 
     </tr> 
     <tr> 
      <td>Tatyana Fitzpatrick</td> 
      <td>Regional Director</td> 
      <td>London</td> 
      <td>19</td> 
      <td>2010/03/17</td> 
      <td>$385,750</td> 
     </tr> 
     <tr> 
      <td>Michael Silva</td> 
      <td>Marketing Designer</td> 
      <td>London</td> 
      <td>66</td> 
      <td>2012/11/27</td> 
      <td>$198,500</td> 
     </tr> 
     <tr> 
      <td>Paul Byrd</td> 
      <td>Chief Financial Officer (CFO)</td> 
      <td>New York</td> 
      <td>64</td> 
      <td>2010/06/09</td> 
      <td>$725,000</td> 
     </tr> 
     <tr> 
      <td>Gloria Little</td> 
      <td>Systems Administrator</td> 
      <td>New York</td> 
      <td>59</td> 
      <td>2009/04/10</td> 
      <td>$237,500</td> 
     </tr> 
     <tr> 
      <td>Bradley Greer</td> 
      <td>Software Engineer</td> 
      <td>London</td> 
      <td>41</td> 
      <td>2012/10/13</td> 
      <td>$132,000</td> 
     </tr> 
     <tr> 
      <td>Dai Rios</td> 
      <td>Personnel Lead</td> 
      <td>Edinburgh</td> 
      <td>35</td> 
      <td>2012/09/26</td> 
      <td>$217,500</td> 
     </tr> 
     <tr> 
      <td>Jenette Caldwell</td> 
      <td>Development Lead</td> 
      <td>New York</td> 
      <td>30</td> 
      <td>2011/09/03</td> 
      <td>$345,000</td> 
     </tr> 
     <tr> 
      <td>Yuri Berry</td> 
      <td>Chief Marketing Officer (CMO)</td> 
      <td>New York</td> 
      <td>40</td> 
      <td>2009/06/25</td> 
      <td>$675,000</td> 
     </tr> 
     <tr> 
      <td>Caesar Vance</td> 
      <td>Pre-Sales Support</td> 
      <td>New York</td> 
      <td>21</td> 
      <td>2011/12/12</td> 
      <td>$106,450</td> 
     </tr> 
     <tr> 
      <td>Doris Wilder</td> 
      <td>Sales Assistant</td> 
      <td>Sidney</td> 
      <td>23</td> 
      <td>2010/09/20</td> 
      <td>$85,600</td> 
     </tr> 
     <tr> 
      <td>Angelica Ramos</td> 
      <td>Chief Executive Officer (CEO)</td> 
      <td>London</td> 
      <td>47</td> 
      <td>2009/10/09</td> 
      <td>$1,200,000</td> 
     </tr> 
     <tr> 
      <td>Gavin Joyce</td> 
      <td>Developer</td> 
      <td>Edinburgh</td> 
      <td>42</td> 
      <td>2010/12/22</td> 
      <td>$92,575</td> 
     </tr> 
     <tr> 
      <td>Jennifer Chang</td> 
      <td>Regional Director</td> 
      <td>Singapore</td> 
      <td>28</td> 
      <td>2010/11/14</td> 
      <td>$357,650</td> 
     </tr> 
     <tr> 
      <td>Brenden Wagner</td> 
      <td>Software Engineer</td> 
      <td>San Francisco</td> 
      <td>28</td> 
      <td>2011/06/07</td> 
      <td>$206,850</td> 
     </tr> 
     <tr> 
      <td>Fiona Green</td> 
      <td>Chief Operating Officer (COO)</td> 
      <td>San Francisco</td> 
      <td>48</td> 
      <td>2010/03/11</td> 
      <td>$850,000</td> 
     </tr> 
     <tr> 
      <td>Shou Itou</td> 
      <td>Regional Marketing</td> 
      <td>Tokyo</td> 
      <td>20</td> 
      <td>2011/08/14</td> 
      <td>$163,000</td> 
     </tr> 
     <tr> 
      <td>Michelle House</td> 
      <td>Integration Specialist</td> 
      <td>Sidney</td> 
      <td>37</td> 
      <td>2011/06/02</td> 
      <td>$95,400</td> 
     </tr> 
     <tr> 
      <td>Suki Burks</td> 
      <td>Developer</td> 
      <td>London</td> 
      <td>53</td> 
      <td>2009/10/22</td> 
      <td>$114,500</td> 
     </tr> 
     <tr> 
      <td>Prescott Bartlett</td> 
      <td>Technical Author</td> 
      <td>London</td> 
      <td>27</td> 
      <td>2011/05/07</td> 
      <td>$145,000</td> 
     </tr> 
     <tr> 
      <td>Gavin Cortez</td> 
      <td>Team Leader</td> 
      <td>San Francisco</td> 
      <td>22</td> 
      <td>2008/10/26</td> 
      <td>$235,500</td> 
     </tr> 
     <tr> 
      <td>Martena Mccray</td> 
      <td>Post-Sales support</td> 
      <td>Edinburgh</td> 
      <td>46</td> 
      <td>2011/03/09</td> 
      <td>$324,050</td> 
     </tr> 
     <tr> 
      <td>Unity Butler</td> 
      <td>Marketing Designer</td> 
      <td>San Francisco</td> 
      <td>47</td> 
      <td>2009/12/09</td> 
      <td>$85,675</td> 
     </tr> 
     <tr> 
      <td>Howard Hatfield</td> 
      <td>Office Manager</td> 
      <td>San Francisco</td> 
      <td>51</td> 
      <td>2008/12/16</td> 
      <td>$164,500</td> 
     </tr> 
     <tr> 
      <td>Hope Fuentes</td> 
      <td>Secretary</td> 
      <td>San Francisco</td> 
      <td>41</td> 
      <td>2010/02/12</td> 
      <td>$109,850</td> 
     </tr> 
     <tr> 
      <td>Vivian Harrell</td> 
      <td>Financial Controller</td> 
      <td>San Francisco</td> 
      <td>62</td> 
      <td>2009/02/14</td> 
      <td>$452,500</td> 
     </tr> 
     <tr> 
      <td>Timothy Mooney</td> 
      <td>Office Manager</td> 
      <td>London</td> 
      <td>37</td> 
      <td>2008/12/11</td> 
      <td>$136,200</td> 
     </tr> 
     <tr> 
      <td>Jackson Bradshaw</td> 
      <td>Director</td> 
      <td>New York</td> 
      <td>65</td> 
      <td>2008/09/26</td> 
      <td>$645,750</td> 
     </tr> 
     <tr> 
      <td>Olivia Liang</td> 
      <td>Support Engineer</td> 
      <td>Singapore</td> 
      <td>64</td> 
      <td>2011/02/03</td> 
      <td>$234,500</td> 
     </tr> 
     <tr> 
      <td>Bruno Nash</td> 
      <td>Software Engineer</td> 
      <td>London</td> 
      <td>38</td> 
      <td>2011/05/03</td> 
      <td>$163,500</td> 
     </tr> 
     <tr> 
      <td>Sakura Yamamoto</td> 
      <td>Support Engineer</td> 
      <td>Tokyo</td> 
      <td>37</td> 
      <td>2009/08/19</td> 
      <td>$139,575</td> 
     </tr> 
     <tr> 
      <td>Thor Walton</td> 
      <td>Developer</td> 
      <td>New York</td> 
      <td>61</td> 
      <td>2013/08/11</td> 
      <td>$98,540</td> 
     </tr> 
     <tr> 
      <td>Finn Camacho</td> 
      <td>Support Engineer</td> 
      <td>San Francisco</td> 
      <td>47</td> 
      <td>2009/07/07</td> 
      <td>$87,500</td> 
     </tr> 
     <tr> 
      <td>Serge Baldwin</td> 
      <td>Data Coordinator</td> 
      <td>Singapore</td> 
      <td>64</td> 
      <td>2012/04/09</td> 
      <td>$138,575</td> 
     </tr> 
     <tr> 
      <td>Zenaida Frank</td> 
      <td>Software Engineer</td> 
      <td>New York</td> 
      <td>63</td> 
      <td>2010/01/04</td> 
      <td>$125,250</td> 
     </tr> 
     <tr> 
      <td>Zorita Serrano</td> 
      <td>Software Engineer</td> 
      <td>San Francisco</td> 
      <td>56</td> 
      <td>2012/06/01</td> 
      <td>$115,000</td> 
     </tr> 
     <tr> 
      <td>Jennifer Acosta</td> 
      <td>Junior Javascript Developer</td> 
      <td>Edinburgh</td> 
      <td>43</td> 
      <td>2013/02/01</td> 
      <td>$75,650</td> 
     </tr> 
     <tr> 
      <td>Cara Stevens</td> 
      <td>Sales Assistant</td> 
      <td>New York</td> 
      <td>46</td> 
      <td>2011/12/06</td> 
      <td>$145,600</td> 
     </tr> 
     <tr> 
      <td>Hermione Butler</td> 
      <td>Regional Director</td> 
      <td>London</td> 
      <td>47</td> 
      <td>2011/03/21</td> 
      <td>$356,250</td> 
     </tr> 
     <tr> 
      <td>Lael Greer</td> 
      <td>Systems Administrator</td> 
      <td>London</td> 
      <td>21</td> 
      <td>2009/02/27</td> 
      <td>$103,500</td> 
     </tr> 
     <tr> 
      <td>Jonas Alexander</td> 
      <td>Developer</td> 
      <td>San Francisco</td> 
      <td>30</td> 
      <td>2010/07/14</td> 
      <td>$86,500</td> 
     </tr> 
     <tr> 
      <td>Shad Decker</td> 
      <td>Regional Director</td> 
      <td>Edinburgh</td> 
      <td>51</td> 
      <td>2008/11/13</td> 
      <td>$183,000</td> 
     </tr> 
     <tr> 
      <td>Michael Bruce</td> 
      <td>Javascript Developer</td> 
      <td>Singapore</td> 
      <td>29</td> 
      <td>2011/06/27</td> 
      <td>$183,000</td> 
     </tr> 
     <tr> 
      <td>Donna Snider</td> 
      <td>Customer Support</td> 
      <td>New York</td> 
      <td>27</td> 
      <td>2011/01/25</td> 
      <td>$112,000</td> 
     </tr> 
    </tbody> 
</table> 

的Javascript:

$(document).ready(function() { 
    var table = $('#example').DataTable({ 
     "lengthMenu": [5, 10, 50, 100], 
     "pageLength": 50, 
     "scrollX": true, 
     dom: 'Bfrtip', 
     buttons: [{ 
       extend: 'excelHtml5', 
       text: 'Export All', 
       exportOptions: { 
        columns: ':visible:not(.not-exported)' 
       }, 
       title: 'Data export' 
      }, { 
       extend: 'excelHtml5', 
       text: 'Export selected', 
       exportOptions: { 
        columns: ':visible:not(.not-exported)', 
        modifier: { 
         selected: true 
        } 
       }, 
       title: 'Data export' 
      } 
     ], 
     select: { 
      style: 'multi' 
     } 
    }); 
}); 

的jsfiddle:

https://jsfiddle.net/p8cymj4s/2/

+0

这是否适用于你,它不在这里工作,我必须点击然后等待一会儿,然后再次点击选择该行。我无法选择点击行。而且它不会导出任何数据,下载一个空白的Excel。 – Mukesh

+0

我必须按CTRL选择多个行,这是我不想要的。这就是为什么我添加点击TR添加选定的类,并删除“选择:真”。 – Mukesh

+0

现在请检查 – rad11

相关问题