django jeditable datatables多个输入相同的td

时间:2013-07-31 14:20:24

标签: jquery django datatables jeditable

我正在研究django项目,并且我已成功将其与jQuery数据表显示集成(这是一个通用示例,我的代码稍微长一点,而且更具体,但这是重要的部分):

模板:

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

</script>


<table id='example'>
    <thead>
        <th>name</th>
        <th>state</th>
        <th>email</th>
        <th>registration date</th>
        <th>projects</th>
    </thead>
    <tbody>
        <td colspan="5" 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 = Employee.objects.all()

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


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

    # return serialized data

这没有任何障碍。现在我想允许我的用户就地编辑数据。 jEditable插件有效,但它有一些问题:

  • email_disp是一个根据内容为电子邮件着色的功能(例如,它会在字段周围添加html标记,因此如果它是gmail,则文本颜色为绿色)。当我想用jEditable编辑它时,它也会向我显示标签,这不是很好。

  • regdate_disp是一种只以特定方式输出注册日期和时间的功能。然而,当人们编辑这个td时,我希望他们看到两个不同的输入 - 一个用于日期(这将是一个jQuery日期选择器)和一个用于时间(只是一个规则文本字段)。

  • 每个员工都有几个项目(它是一个ManyToMany关系),而projects_disp函数的作用类似于:return','。join(Employee.projects.all())。但是,在编辑此字段时,我认为最佳显示是下拉清单。

正如您所看到的,jEditable的简单功能对我没有帮助。我想解决这个问题的理想方法是在表格的每一行旁边放一个按钮,单击该按钮时,将向服务器发送此行,并返回一个定制输入的数组(如aaData)来替换每个td。该按钮将更改为保存图标,再次单击时将重新收集数据。

然而,我对javascript并不是很好,我不知道如何做到这一点。任何帮助或完整的示例都将非常感激(包括如何将解决方案与数据表集成而不会破坏任何内容)。

0 个答案:

没有答案