【发布时间】:2018-12-29 12:13:27
【问题描述】:
我正在使用 ListView 列出 div 元素内的数据表。在父页面中,我使用 jquery .load() 在 div 中加载 ListView 模板。如果我使用 ajax 调用删除表中的条目并通过使用 .load() 调用 ListView 重新加载表,则表将失去其数据表功能(它被列为普通表而不是数据表,没有分页等)。我怀疑我在第二个 ajax 调用中遗漏了一些东西。
我的带有数据表的 ListView 模板。
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
<table class="table vr-mdl" id="contable">
<thead>
<tr>
<th class="th-one">
<button class="ml-10 bl-btn no-br no-lh np-col btn btn-sm btn-default-imp-white add-filter-btn" id="contactTabelView">
<i class="material-icons v-sub">add</i>
</button>
</th>
<th class="th-two">Basic Info</th>
<!-- <th class="th-three">Company</th> -->
<th class="th-four">Tags</th>
<!-- <th class="th-five">Lead Score</th> -->
<th class="th-six">
<button class="bl-btn no-br no-lh np-col btn btn-sm btn-default-imp-white add-filter-btn" id="contactTabelView">
<i class="material-icons v-sub">chevron_left</i>
</button>
<button class="bl-btn no-br no-lh np-col btn btn-sm btn-default-imp-white add-filter-btn" id="contactTabelView">
<i class="material-icons v-sub">chevron_right</i>
</button>
</th>
</tr>
</thead>
<tbody id="list_contact_here" >
{% for u in object_list %}
<tr class="odd-tr">
<td>
<label class='custom_check_container'>
<input type='checkbox' class='select-all-radio a-c-b contact_ch' value="{{u.id}}" name='contact_checked'>
<span class='custom_check'></span>
</label>
</td>
<td class='slct_prfl' data-href="{% url 'contacts:view_profile' id=u.id %}">
<img class='thumb-sm img-inital img-circle' title='Customer Success Team' data-name='CT' src='https://www.agilecrm.com/icons/service.svg' alt=''>
<p>{{ u.first_name }}<br><small style='font-size:11px;'>mail</small>
</p>
</td>
<td>
<span class="contact_tag label bg-light dk text-tiny m-r-2 tags-l-h">Sample</span>
</td>
<td class='edit_option_contact'>
<a class='contact-td-more dropdown-toggle' data-toggle='dropdown' aria-expanded='false'>
<i class='material-icons'>more_horiz</i>
</a>
<ul class='contact-more-options dropdown-menu dropdown-menu1 pull-right' role='menu'>
<li><a href='#' class='contact-more-edit'><i class='material-icons'>mode_edit</i><span>Edit</span></a>
</li>
<li><a href='#' class='contact-more-delete ignore-tr-click'><i class='material-icons ignore-tr-click'>delete</i><span class='ignore-tr-click'>Delete</span></a>
</li>
<li><a href='#' class='contact-more-send-mail ignore-tr-click'><i class='material-icons ignore-tr-click'>email</i><span class='ignore-tr-click'>Send Email</span></a>
</li>
<li><a href='#' class='schedule-appoinment ignore-tr-click'><i class='material-icons ignore-tr-click'>date_range</i><span class='ignore-tr-click'>Schedule an appointment</span></a>
</li>
<li><a href='#noteModal' class='contact-more-add-note ignore-tr-click'><i class='material-icons ignore-tr-click'>note_add</i><span class='ignore-tr-click'>Add Note</span></a>
</li>
<li><a href='#' class='contact-more-add-event ignore-tr-click'><i class='material-icons ignore-tr-click'>event</i><span class='ignore-tr-click'>Add Event</span></a>
</li>
<li><a href='#' class='contact-more-add-deal ignore-tr-click'><i class='material-icons ignore-tr-click'>monetization_on</i><span class='ignore-tr-click'>Add Deal</span></a>
</li>
</ul>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function() {
$('#contable').dataTable({
"pageLength": 5,
"autoWidth": false,
"bLengthChange": false,
"ordering": false,
"info": false,
"searching": false
});
} );
</script>
以及父模板中的 ajax 调用。
function list_conts(){
var url="{% url 'contacts:contlist'%}";
$("#con_table").load(url);
}
如何再次加载?非常感谢您的帮助。
【问题讨论】:
-
您是否在控制台中收到任何错误?这似乎是函数 list_conts 中#con_table 中的错字
-
是的,我收到一个 jquery.Deferred 异常 ....datatable 不是一个函数并且 Uncaught typeerror....datatable 不是一个函数。
-
您的 HTML 中有
id="contable",并且您正在将数据加载到con_table(没有下划线) -
@Fr0zenFyr 对不起,我没有发布父页面。 con_table id 属于加载表格的父页面中的 div 元素(在 HTML 之上)。
-
在您的模板中,在 document.ready() 之外初始化 DT。
load()不会执行里面的代码