0

我正在开发一个 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>

服务器端:

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>

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

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

4

1 回答 1

0

我解决了!最后...

我使用了jquery-datatables-column-filter插件。它既体面又易于使用,他们的网站上有一个如何使用外部表单的示例。确实,我实际上并没有过滤特定的列,但是由于我使用的是服务器端,所以这并不重要。

于 2013-08-28T11:16:01.050 回答