1

I have a page coded in Handlebars and I am fetching the data as json from nodejs. I am trying to render a button which is a third party button. When I don't use DataTables() then the buttons are correctly render and clicking them opens a third party login window for further processing.

However, when I enable DataTables, only the first page is correctly rendered and the buttons work, but it does not work for other pages when the number of elements exceed 10. I am not sure if this is an issue with DataTables or how the third party button is expected to behave, but I am suspecting that when I switch pages in DataTables, the parameters the button expects while rendering are not correctly sent. I am new to DataTables.

<body>
<div class="container">
    <div class="jumbotron">
    <h1>Last 100 NSE Annoucements</h1>
    <h3>Top Annoucements by corporates listed on NSE</h3>
    </div>
</div>

<div class="container"> 
    <table class="table table-hover table-responsive table-sm" id="resultTable"">
        <thead>
        <tr>
        <th class="col-sm-1" scope="row">Ticker</th>
        <th class="col-sm-1" scope="row">Link</th>
        <th class="col-sm-2" scope="row">Date</th>
        <th class="col-sm-5" scope="row">Description</th>
        <th class="col-sm-1" scope="row">Trade</th>
        </tr>
        </thead>
        <tbody>
        {{#each feedList}}
        <tr>
            <td> {{this.ticker}} </td>
            <td> <a href="{{this.attachmentLink}}"> {{this.ticker}}</a> </td>
            <td> {{moment date=this.dateAdded format="DD-MM-YYYY h:mm:ss a"}} </td>
            <td> {{this.purposeText}} </br> {{this.summaryText}} </td>
            <td> <span> <kite-button href="#" data-kite="secret_key"
                data-exchange="NSE"
                data-tradingsymbol="{{this.ticker}}"
                data-transaction_type="BUY"
                data-quantity="1"
                data-order_type="MARKET">Buy {{this.ticker}} stock</kite-button> </span></td> 
        </tr>
           {{/each}}
        </tbody>
    </table>
</div>
</body>
    <script>
    $(document).ready(function() {
        $('#resultTable').DataTable({
        "order": [[ 2, "desc" ]],
        "columnDefs" : [{"targets":2, "type":"date"}]
        });
    });</script>
</html>

How to modify this - most probably custom rendering of the button as each row is displayed?

EDIT

I am trying to modify the DataTable by custom rendering the button each time - but its not working.

<body>
<div class="container">
    <div class="jumbotron">
    <h1>Last 100 NSE Annoucements</h1>
    <h3>Top Annoucements by corporates listed on NSE</h3>
    </div>
</div>

<div class="container"> 
    <table class="table table-hover table-responsive table-sm" id="resultTable"">
        <thead>
        <tr>
        <th class="col-sm-1" scope="row">Ticker</th>
        <th class="col-sm-1" scope="row">Link</th>
        <th class="col-sm-2" scope="row">Date</th>
        <th class="col-sm-5" scope="row">Description</th>
        <th class="col-sm-1" scope="row">Trade</th>
        </tr>
        </thead>
        <tbody>
        {{#each feedList}}
        <tr>
            <td> {{this.ticker}} </td>
            <td> <a href="{{this.attachmentLink}}"> {{this.ticker}}</a> </td>
            <td> {{moment date=this.dateAdded format="DD-MM-YYYY h:mm:ss a"}} </td>
            <td> {{this.purposeText}} </br> {{this.summaryText}} </td>
            <td> {{this.ticker}} </td> 
        </tr>
           {{/each}}
        </tbody>
    </table>
</div>
</body>
    <script>
    $(document).ready(function() {
        $('#resultTable').DataTable({
        "order": [[ 2, "desc" ]],
        "columnDefs" : [{"targets":2, "type":"date"},
        { 
            targets: -1,
            searchable: false,
            orderable: false,
            render: function(data, type, full, meta){
               if(type === 'display'){
              data = '<kite-button href="#" data-kite="scret" data-exchange="NSE" data-tradingsymbol=' + data + 'data-quantity="1" data-order_type="MARKET">Buy '+ data + 'stock</kite-button>';      
               }

               return data;
            }
        ]
        });
    });</script>
</html>
davidkonrad
  • 83,997
  • 17
  • 205
  • 265
DrBug
  • 2,004
  • 2
  • 20
  • 21

0 Answers0