我有一个基于AJAX的数据表,我想对其应用其他过滤。到目前为止,我只发现了客户端或过时的示例。我不明白搜索实际上是如何执行的,以及如何添加过滤器以起作用。
一个简单的示例,我试图将供应商过滤器添加到我的SKU数据表中。我已经用供应商名称填充了一个选择框。如果选择了供应商,我只想显示该供应商的SKU。此外,用户应该能够使用搜索来浏览该供应商的结果。如何过滤结果?
这是我的coffescript(更新):
$ ->
$('#vendor-skus-table').DataTable
processing: true
serverSide: true
retrieve: true
pagingType: 'full_numbers'
ajax: data: (d) ->
d.sku = $('#vendor-skus-table').data('source')
d.extra_search = $('#vendor-select').val();
return
我的过滤器字段的一些其他JavaScript:
$('#vendor-select.vendor-select').on('change', function() {
$('#vendor-skus-table').DataTable().ajax.reload();
});
我的数据表文件:
class VendorSkuDatatable < AjaxDatatablesRails::Base
def_delegators :@view, :params, :link_to, :vendor_skus_path, :vendor_path
def sortable_columns
@sortable_columns ||= ['VendorSku.name', 'Vendor.name', 'VendorSku.inventory_quantity' ]
end
def searchable_columns
@searchable_columns ||= ['VendorSku.name', 'Vendor.name']
end
private
def data
records.map do |record|
[
link_to(record.name, record),
link_to(record.vendor.name, record.vendor),
record.inventory_quantity
]
end
end
def get_raw_records
VendorSku.joins(:vendor).where(vendor_id: params[:extra_search])
end
end
抱歉,我的代码将是JavaScript,我不知道CoffeScript。
为了将参数添加到您的ajax请求中,您必须ajax.data
在创建时指定一个选项datatable
:
$('#vendor-skus-table').DataTable({
// ... your paramteres
ajax: {
data: function(d) {
d.sku = $('#vendor-skus-table').data('source'); // or maybe $('#vendor-skus-table').data('source').join(',')
}
}
您将sku
在后端获得ajax请求的参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句