【问题标题】:Yadcf - Server side multi selectYadcf - 服务器端多选
【发布时间】:2015-09-28 23:27:03
【问题描述】:

我使用了函数 yadcf multi_select 当我搜索两个单词时,该函数在我之间放置了一个管道。我不知道如何删除它,因为他分别理解这两个词。

http://www.hostingpics.net/viewer.php?id=710742Capture.jpg

我发现管道会以这个函数开头:

function doFilterMultiSelect(arg, table_selector_jq_friendly, column_number, filter_match_mode) {
		$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];
		var oTable = oTables[table_selector_jq_friendly],
			selected_values = $(arg).val(),
			selected_values_trimmed = [],
			i,
			stringForSearch,
			column_number_filter,
			settingsDt = getSettingsObjFromTable(oTable);

		column_number_filter = calcColumnNumberFilter(settingsDt, column_number, table_selector_jq_friendly);
		$(document).data("#yadcf-filter-" + table_selector_jq_friendly + "-" + column_number + "_val", selected_values);

		if (selected_values !== null) {
			for (i = selected_values.length - 1; i >= 0; i--) {
				if (selected_values[i] === "-1") {
					selected_values.splice(i, 1);
					break;
				}
			}
			for (i = 0; i < selected_values.length; i++) {
				selected_values_trimmed.push($.trim(selected_values[i]));
			}
			if (selected_values_trimmed.length !== 0) {
				stringForSearch = selected_values_trimmed.join('narutouzomaki');
				stringForSearch = stringForSearch.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
				stringForSearch = stringForSearch.split('narutouzomaki').join('|');
				if (filter_match_mode === "contains") {
					oTable.fnFilter(stringForSearch, column_number_filter, true, false, true);
				} else if (filter_match_mode === "exact") {
					oTable.fnFilter("^(" + stringForSearch + ")$", column_number_filter, true, false, true);
				} else if (filter_match_mode === "startsWith") {
					oTable.fnFilter("^(" + stringForSearch + ")", column_number_filter, true, false, true);
				} else if (filter_match_mode === "regex") {
					oTable.fnFilter(stringForSearch, column_number_filter, true, false, true);
				}
			} else {
				oTable.fnFilter("", column_number_filter);
			}
		} else {
			oTable.fnFilter("", column_number_filter);
		}
		resetIApiIndex();
	}

我似乎无法解决操作 multi_select 的问题。

感谢您的帮助

【问题讨论】:

    标签: datatables yadcf


    【解决方案1】:

    由于您在 yadcf 的某些列上使用了多选过滤器,因此会将带有 | (OR) 的字符串发送到您的服务器。

    在您的服务器端,您必须将字符串拆分为字符串的数组/列表并构造正确的 sql 查询。

    Split in Java

    Split in PHP(see code sample in bottom

    p.s 我是 yadcf 的作者

    【讨论】:

    • 感谢您的回答,我无法在服务器端应用字符串拆分。我不知道在哪里放 php 代码来拆分单词,我尝试了一周后才找到代码,但我找不到(对不起我的英语不好)
    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2015-08-26
    • 2017-06-06
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多