jQWidgets jqxDataTable filterMode属性

  • Post category:jquery

以下是关于“jQWidgets jqxDataTable filterMode属性”的完整攻略,包含两个示例说明:

简介

jqx 控件提供了 filterMode 属性,用于设置表格的筛选模式。通过设置 filterMode 属性,我们可以控制表格的筛选方式,以适应不同的需求。

详细攻略

以下是 jqxDataTable 控件的 filterMode 属性的详细攻略:

filterMode属性

filterMode 属性是 jqxDataTable 控件的一个属性,用于设置表格的筛选模式。该属性包含以下几个选项:

  • default:默认的筛选模式,支持文本、数字和日期等类型的筛选。
  • advanced:高级筛选模式,支持多个条件的组合筛选。
  • excel:Excel 风格的筛选模式,支持多个条件的组合筛选,并提供了更多的筛选选项。

示例1

在此示例中,我们创建了 jqxDataTable 控件,并使用 filterMode 属性来设置表格的筛选模式为 default

<div id="jqxdatatable"></div>
<script>
    $(document).ready(function () {
        // 创建 jqxDataTable 控件
        var data = [
            { name: '张三', age: 20, gender: '男', address: '北京市' },
            { name: '李四', age: 25, gender: '女', address: '上海市' },
            { name: '王五', age: 30, gender: '男', address: '州市' },
            { name: '赵六', age: 35, gender: '女', address: '深圳市' },
            { name: '钱七', age:40, gender: '男', address: '杭州市' },
            { name: '孙八', age: 45, gender: '女', address: '南京市' },
            { name: '周九', age: 50, gender: '男', address: '成都市' },
            { name: '吴十', age: 55, gender: '女', address: '重庆市' }
        ];
        var source = {
            datatype: 'json',
            datafields: [
                { name: 'name', type: 'string' },
                { name: 'age', type: 'number' },
                { name: 'gender', type: 'string' },
                { name: 'address', type: 'string' }
            ],
            localdata: data,
            totalrecords: data.length
        };
        var dataAdapter = new $.jqx.dataAdapter(source);
        $("#jqxdatatable").jqxDataTable({
            columns: [
                { text: '姓名', datafield: 'name' },
                { text: '年龄', datafield: 'age' },
                { text: '性别', datafield: 'gender' },
                { text: '地址', datafield: 'address' }
            ],
            source: dataAdapter,
            filterMode: 'default'
        });
    });
</script>

在上述代码中,我们创建了一个 jqxDataTable 控件,并使用 filterMode 属性来设置表格的筛选模式为 default

示例2

在此示例中,我们创建了一个 jqx 控件,并使用 filterMode 属性来设置表格的筛选模式为 excel。在表格的 filter 事件中,我们使用 getFilterInformation() 方法来获取筛选信息,并将其显示在另一个 jqxDataTable 控件中。

<div id="jqxdatatable"></div>
<div="result"></div>
<script>
    $(document).ready(function () {
        // 创建 jqxDataTable 控件
        var data = [
            { name: '张三', age: 20, gender: '男', address: '北京市' },
            { name: '李四', age: 25, gender: '女', address: '上海市' },
            { name: '王五', age: 30, gender: '男', address: '州市' },
            { name: '赵六', age: 35, gender: '女', address: '深圳市' },
            { name: '钱七', age: 40, gender: '男', address: '杭州市' },
            { name: '孙八', age: 45, gender: '女', address: '南京市' },
            { name: '周九', age: 50, gender: '男', address: '成都市' },
            { name: '吴十', age: 55, gender: '女', address: '重庆' }
        ];
        var source = {
            datatype: 'json',
            datafields: [
                { name: 'name', type: 'string' },
                { name: 'age', type: 'number' },
                { name: 'gender', type: 'string' },
                { name: 'address', type: 'string' }
            ],
            localdata: data,
            totalrecords: data.length
        };
        var dataAdapter = new $.jqx.dataAdapter(source);
        $("#jqxdatatable").jqxDataTable({
            columns: [
                { text: '姓名', datafield: 'name' },
                { text: '年龄', datafield: 'age' },
                { text: '性别', datafield: 'gender' },
                { text: '地址', datafield: 'address' }
            ],
            source: dataAdapter,
            filterMode: 'excel',
            filter: function () {
                var filterInfo = $("#jqxdatatable").jqxDataTable('getFilterInformation');
                var resultData = data.filter(function (item) {
                    var match = true;
                    for (var i = 0; i < filterInfo.length; i++) {
                        var filter = filterInfo[i];
                        if (filter.condition === 'CONTAINS_CASE_SENSITIVE') {
                            match = match && item[filter.datafield].toString().indexOf(filter.value) !== -1;
                        } else if (filter.condition === 'CONTAINS_CASE_INSENSITIVE') {
                            match = match && item[filter.datafield].toString().toLowerCase().indexOf(filter.value.toLowerCase()) !== -1;
                        } else if (filter.condition === 'DOES_NOT_CONTAIN_CASE_SENSITIVE') {
                            match = match && item[filter.datafield].toString().indexOf(filter.value) === -1;
                        } else if (filter.condition === 'DOES_NOT_CONTAIN_CASE_INSENSITIVE') {
                            match = match && item[filter.datafield].toString().toLowerCase().indexOf(filter.value.toLowerCase()) === -1;
                        } else if (filter.condition === 'EQUAL') {
                            match = match && item[filter.datafield] == filter.value;
                        } else if (filter.condition === 'NOT_EQUAL') {
                            match = match && item[filter.datafield] != filter.value;
                        } else if (filter.condition === 'GREATER_THAN') {
                            match = match && item[filter.datafield] > filter.value;
                        } else if (filter.condition === 'LESS_THAN') {
                            match = match && item[filter.datafield] < filter.value;
                        } else if (filter.condition === 'GREATER_THAN_OR_EQUAL') {
                            match = match && item[filter.datafield] >= filter.value;
                        } else if (filter.condition === 'LESS_THAN_OR_EQUAL') {
                            match = match && item[filter.datafield] <= filter.value;
                        }
                    }
                    return match;
                });
                var resultSource = {
                    datatype: 'json',
                    datafields: [
                        { name: 'name', type: 'string' },
                        { name: 'age', type: 'number' },
                        { name: 'gender', type: 'string' },
                        { name: 'address', type: 'string' }
                    ],
                    localdata: resultData,
                    totalrecords: resultData.length
                };
                var resultDataAdapter = new $.jqx.dataAdapter(resultSource);
                $("#result").jqxDataTable({ source: resultDataAdapter });
            }
        });
    });
</script>

在上述代码中,我们创建了一个 jqxDataTable 控件,并使用 filterMode 属性来设置表格的筛选模式为 excel。在表格的 filter 事件中,我们使用 getFilterInformation() 方法来获取筛选信息,并将其显示在另一个 `jqxDataTable 控件中。