2012-03-21 1 views
1

У меня простая форма с единственной кнопкой и данными с множеством данных. Когда пользователь выбирает один из вариантов Я хочу DataTable, чтобы обновить данные, передавая kwarg - что, будучи значение выбора, который позволит уменьшить размер данных ..jQuery и Datatables fnServerParam, не показывающий никакой любви:/

Мой вопрос:

Как использовать fnServerParams, чтобы сделать это чище?

Мой основной выбор.

<div class="span-15 last"><select name="customer" id="id_customer"> 
    <option value="" selected="selected">---------</option> 
    <option value="1">A</option> 
    <option value="2">B</option> 
    <option value="4">C</option> 
</select></div> 

И соответствующие js.

<link rel="stylesheet" href="{{STATIC_URL}}css/datatable.css" /> 
<script type="text/javascript" src="{{STATIC_URL}}js/jquery.dataTables.min.js"></script> 
<script style="text/javascript"> 
    $(document).ready(function() { 

     $('#data_table').dataTable({ 
      'sPaginationType':'full_numbers', 
      'sDom': '<lf><"clear">rt<"bottom"<"tpad"i<"clear"p>>>', 
      "bProcessing": true, 
      "sAjaxSource": "{% url incentive_distribution_homes_ajax_list %}" 
     }); 

     $('#id_customer').change(function() { 
      var builder_id = $(this).val(); 

      //fix this using fnServerParam?? 

      $('#data_table').dataTable({ 
       "bDestroy":true, 
       'sPaginationType':'full_numbers', 
       'sDom': '<lf><"clear">rt<"bottom"<"tpad"i<"clear"p>>>', 
       "bProcessing": true, 
       "sAjaxSource": "{% url incentive_distribution_homes_ajax_list %}", 
       "fnServerData": function (sSource, aoData, fnCallback) { 
        $.ajax({ 
          "dataType": 'json', 
          "type":"GET", 
          "url": sSource, 
          "data" : { 'builder_id': builder_id } , 
          "success": fnCallback 
        }) 
       } 
      }); 
     }); 
+0

Я написал питон/Джанго обертку для DataTables, здесь https://github.com/eire1130/Django_datatables Может быть, может помочь. Я постараюсь посмотреть на ваш вопрос позже сегодня вечером, но –

+0

Эй, Джеймс. Это выглядит интересно, но это не касается моего вопроса. Я бы, конечно, посмотрел на что-то подобное, если бы он затронул мой вопрос. Благодаря! – rh0dium

ответ

1

Это то, что я хотел бы сделать:

Я хотел бы создать еще один JavaScript Object действовать в качестве слушателя на #id_customer, настроить его таким образом, что в случае изменения DOM, он будет вызывать DataTables (или соответствующий в этом случае.)

Оттуда, чтобы получить данные, которые вы хотите передать на сервер, используйте «fnServerParams» и извлеките значение, которое вы хотите передать из DOM.

Docs здесь, на этой переменной, а также примеры:

http://datatables.net/release-datatables/examples/server_side/custom_vars.html

После того, как вы пройдете, что вместе, вам нужно будет поймать его на стороне сервера (но не в URL,, вы не должны Нет необходимости добавлять дополнительные параметры.) Просто найдите «fnServerParams» в request.GET.

(и за то, что его ценность, вы можете использовать django_datables для решения этой проблемы)

+0

Yup - Я получил большую часть этого, но это уродливо - см. Выше. Никакого количества fnServerParams – rh0dium

Смежные вопросы