使用外部表单数据重新初始化数据表(服务器端django应用程序)

时间:2013-07-19 01:48:59

标签: ajax django datatables

我正在开发一个django Web应用程序,并成功实现了精彩的jQuery数据表,以便通过服务器端处理来呈现我的数据。我无法访问原始文件(这是我的工作场所的项目,他们没有互联网访问权限,现在我回家了),但它看起来像这样:

模板:

<script type="text/javascript">
    $(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "/user_table/"
    } );
} );

</script>


<table id='example'>
    <thead>
        <th>name</th>
        <th>state</th>
        <th>email</th>
    </thead>
    <tbody>
        <td colspan="3" class="dataTables_empty">Loading data from server</td>
    </tbody>

</table>

server_side:

def main_view(request):
    return render_to_response('index.html')

def datatables_view(request):
    start = request.GET['iDisplayStart']
    length = request.GET['iDisplayLength']

    query = myUser.objects.all()

    if request.GET.has_key('sSearch'):
        # filtering...


    query = query[start:start+length]
    response = ["aaData": [(q.name, q.state, q.email) for q in query]]

    # return serialized data
再次,就像我提到的那样,我对此没有任何麻烦。整合工作正常。真的,甚至比罚款更好。我喜欢它。

我真正需要的是,比数据表附带的默认过滤器更复杂的过滤器。我的工作有非常特殊的搜索相关类型,非常有用。所以我有一个垂直出现在桌子上方的表格。让我们说它看起来像这样:

<form>
    <label for='name'>name:</label>
    <input type='text' name='name'></input>

    <label for'costumer'>costumer?</label>
    <input type='checkbox' name='costumer'></input>

    <select multiple="multiple">
        <option id='regular'>regular</option>    
        <option id='new'>new</option>
    </select>

    <input type='submit' value='filter!'> </input>
</form>

我希望当用户点击提交按钮时,它会发送表单数据并使用我的costumized过滤重新初始化数据表。然后我想要另一个按钮,它会刷新并重新加载数据表并取消它发送的任何初始数据(好像你刷新了页面,实际上没有)。

我对javascript不是很有经验,所以简单的解决方案是最好的,但是非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我解决了!最后...

我使用了jquery-datatables-column-filter插件。它体面且易于使用,并且在他们的网站how to use an external form上有一个例子。确实,我实际上并没有对特定列进行过滤,但由于我使用服务器端并不重要。