如何使 url 人类可读的免费 jqgrid 过滤器
How to make free jqgrid filter in url human readable
免费的 jqgrid 使用 json 格式从服务器读取数据。
使用jqgrid高级搜索、工具栏搜索或在代码中创建过滤条件。
使用
从GET请求查询字符串filters
参数中读取
var urlFilters,
namedParameters = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'),
parameters = {},
nameAndValue,
$grid = $("#grid"), i;
for (i = 0; i < namedParameters.length; i += 1) {
nameAndValue = namedParameters[i].split('=');
parameters[nameAndValue[0]] = decodeURIComponent(nameAndValue[1]);
if (nameAndValue[0] === "filters") {
urlFilters= decodeURIComponent(nameAndValue[1]);
}
}
$grid.jqGrid({
postData: { filters: urlFilters }
datatype: "json",
这需要传递编码过滤器条件 url,这是人类不可读和不可编辑的:
http://localhost//Desktop?filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Baas%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22KLIENT%22%7D%2C%7B%22field%22%3A%22Liigid%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22%22%7D%5D%7D
有时用户需要直接编辑浏览器url来创建新的过滤条件?
如何使 url 人类可读以便直接编辑?
如何强制 jqgrid 以 OData 或其他格式创建高级和工具栏搜索条件,这些条件在传入 url 时不需要使用 % 进行转义?
免费的jqgrid有OData插件。
如何从这个插件中提取 OData 搜索过滤器创建并允许 jqgrid 以这种格式序列化搜索条件并将其解析回显示在高级搜索过滤器中?
或者是否可以修改当前搜索条件,以便其中不使用 "
(%22)?
and in How one could use server side sorting and paging with Azure Mobile Services
中有相关问题
但我不知道哪种方法最好。
OData 不是严格要求的。也许免费 jqgrid 搜索条件序列化器和反序列化器的一些简单更改允许在 URL 中进行人工编辑。然而,使用 OData 使 API 更加标准化。
使用 ASP.NET MVC4 和 jquery。
我个人使用Fiddler非常活跃。它是免费工具,可从 here 下载。 Fiddler 允许捕获完整的 HTTP 流量。它还包括一些简化典型 HTTP 流量编码和解码的工具。
启动 Fiddler 后,您可以在工具中选择菜单项 "TextWizard" 或使用 Ctrl+E。之后,您将获得非常简单的界面,允许您 decode/encode filters
值。例如,您可以在向导的顶部插入问题 %7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Baas%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22KLIENT%22%7D%2C%7B%22field%22%3A%22Liigid%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22%22%7D%5D%7D
中的过滤器值,然后选择 URL 解码为转换操作。您将立即看到解码结果
您可以复制结果修改它并解码回来。例如过滤器 Name cn "bob"
应该写成 {"groupOp":"AND","rules":[{"field":"Name","op":"cn","data":"bob"}]}
。使用相同的工具并选择 URL 编码操作,您将获得
因此您可以使用 filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Name%22%2C%22op%22%3A%22cn%22%2C%22data%22%3A%22bob%22%7D%5D%7D
作为 URL。
免费的 jqgrid 使用 json 格式从服务器读取数据。 使用jqgrid高级搜索、工具栏搜索或在代码中创建过滤条件。
使用
从GET请求查询字符串filters
参数中读取
var urlFilters,
namedParameters = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'),
parameters = {},
nameAndValue,
$grid = $("#grid"), i;
for (i = 0; i < namedParameters.length; i += 1) {
nameAndValue = namedParameters[i].split('=');
parameters[nameAndValue[0]] = decodeURIComponent(nameAndValue[1]);
if (nameAndValue[0] === "filters") {
urlFilters= decodeURIComponent(nameAndValue[1]);
}
}
$grid.jqGrid({
postData: { filters: urlFilters }
datatype: "json",
这需要传递编码过滤器条件 url,这是人类不可读和不可编辑的:
http://localhost//Desktop?filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Baas%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22KLIENT%22%7D%2C%7B%22field%22%3A%22Liigid%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22%22%7D%5D%7D
有时用户需要直接编辑浏览器url来创建新的过滤条件?
如何使 url 人类可读以便直接编辑? 如何强制 jqgrid 以 OData 或其他格式创建高级和工具栏搜索条件,这些条件在传入 url 时不需要使用 % 进行转义?
免费的jqgrid有OData插件。
如何从这个插件中提取 OData 搜索过滤器创建并允许 jqgrid 以这种格式序列化搜索条件并将其解析回显示在高级搜索过滤器中?
或者是否可以修改当前搜索条件,以便其中不使用 "
(%22)?
但我不知道哪种方法最好。
OData 不是严格要求的。也许免费 jqgrid 搜索条件序列化器和反序列化器的一些简单更改允许在 URL 中进行人工编辑。然而,使用 OData 使 API 更加标准化。
使用ASP.NET MVC4 和 jquery。
我个人使用Fiddler非常活跃。它是免费工具,可从 here 下载。 Fiddler 允许捕获完整的 HTTP 流量。它还包括一些简化典型 HTTP 流量编码和解码的工具。
启动 Fiddler 后,您可以在工具中选择菜单项 "TextWizard" 或使用 Ctrl+E。之后,您将获得非常简单的界面,允许您 decode/encode filters
值。例如,您可以在向导的顶部插入问题 %7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Baas%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22KLIENT%22%7D%2C%7B%22field%22%3A%22Liigid%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22%22%7D%5D%7D
中的过滤器值,然后选择 URL 解码为转换操作。您将立即看到解码结果
您可以复制结果修改它并解码回来。例如过滤器 Name cn "bob"
应该写成 {"groupOp":"AND","rules":[{"field":"Name","op":"cn","data":"bob"}]}
。使用相同的工具并选择 URL 编码操作,您将获得
因此您可以使用 filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Name%22%2C%22op%22%3A%22cn%22%2C%22data%22%3A%22bob%22%7D%5D%7D
作为 URL。