2016-08-08 26 views
0

Ich arbeite mit jQuery-Datatabellen und versuche, das Filter-/Suchfeld in der gleichen Zeile wie die Kopfzeile des div, der die Datentabelle enthält, zu positionieren.jQuery Datatables Filterposition

Hier ist ein Screenshot der Seite:

enter image description here

Und hier ist das Markup:

<div 
    style="box-shadow: 2px 2px 10px 0px rgba(163,153,163,1); padding-top:5px; padding-left: 15px; padding-right: 15px; padding-bottom: 15px; "> 

<h2>Funding Summary</h2> 

<asp:ListView 
    ID="lvFundingSummary" 
    OnItemDataBound="lvFundingSummary_ItemDataBound" 
    runat="server" > 
    <ItemTemplate> 
     <tr> 
      <td style="width: 65%; text-align:left; padding-top: 5px; padding-bottom:5px;"> 
       <asp:Label ID="lblResearchArea" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PlName")%>' /> 
      </td> 
      <td style="width: 15%; text-align:right; padding-top: 5px; padding-bottom:5px;"> 
       <asp:Label ID="lblFundingGross" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "FundingGross", "{0:c}")%>' /> 
      </td> 
      <td style="text-align:right; padding-top: 5px; padding-bottom:5px;"> 
       <asp:Label ID="lblGross" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AllGross", "{0:c}")%>' /> 
      </td> 
     </tr> 
    </ItemTemplate> 

    <LayoutTemplate> 
     <table 
      ID="itemPlaceholderContainer" 
      style="width: 100%"> 

      <thead> 
       <tr> 
        <th style="width: 65%; text-align:left; padding-bottom:10px;">Research Area</th> 
        <th style="width: 15%; text-align:right; padding-bottom:10px;">Gross</th> 
        <th style="text-align:right; padding-bottom:10px;">All EPRI Gross</th> 
       </tr> 
      </thead> 

      <tfoot> 
       <tr> 
        <td style="width: 65%; text-align:left; padding-bottom:10px;"><b>Total(s)</b></td> 
        <td style="width: 15%; text-align:right; padding-bottom:10px;"><b><asp:Label ID="lblTotalFunding" runat="server" /></b></td> 
        <td style="text-align:right; padding-bottom:10px;"><b><asp:Label ID="lblTotalEpriGross" runat="server" /></b></td> 
       </tr>   
      </tfoot> 

      <tbody runat="server"> 
       <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
      </tbody> 

     </table>        
    </LayoutTemplate>   
</asp:ListView> 

</div> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      var table = $('#itemPlaceholderContainer').dataTable(
       { 
        "scrollY": "300px", 
        "scrollX": true, 
        "scrollCollapse": true, 
        "paging": false, 
        "autowidth": true, 

        dom: 'frti<"floatRight"B><"clear">', 
        buttons: [ 
         'copy', 'csv', 'excel', 'pdf', 'print' 
        ] 
       }); 

     }); 
</script> 

Finanzierung Zusammenfassung die Header, mag ich die Filterbox auf den rechten Seite aufreihen von ihm, bündig gegen die rechte Seite des Tisches.

Antwort

0

Sie können einfach Ihre eigenen Filter erstellen und sie auf ein beliebiges Element in Ihrer Seite hinzufügen

$(document).ready(function() { 
    $('#example').DataTable({ 
    initComplete: function() { 
     this.api().columns().every(function() { 
     var column = this; 
     var select = $('<select><option value=""></option></select>') 
      .appendTo($('#filters-area')) 
      .on('change', function() { 
      var val = $.fn.dataTable.util.escapeRegex(
       $(this).val() 
      ); 

      column 
       .search(val ? '^' + val + '$' : '', true, false) 
       .draw(); 
      }); 

     column.data().unique().sort().each(function(d, j) { 
      select.append('<option value="' + d + '">' + d + '</option>') 
     }); 
     }); 
    } 
    }); 
}); 

Demo: https://jsfiddle.net/4ruvq6dr/

1

eine Abhilfe hier gefunden:

https://datatables.net/examples/advanced_init/dom_toolbar.html

I hinzugefügt Dieser Stil:

und dann fügte der folgenden auf die Funktion:

dom: '<"toolbar"><"filterPad"f>rti<"floatRight"B><"clear">', 
+0

Ich würde nicht nennen, dass eine Abhilfe, sondern dass (meiner Meinung nach) ist, wie Sie es tun sollten. Eine andere Lösung wäre, Eingabeart = "Suche" mit einem Stil zu versehen, aber Sie müssen vorsichtig sein, damit sie nicht global gilt. –