我有一个 ASP.NET GridView 和多个 ListBoxes 作为Departments,Categories,Faculties等。在代码隐藏中从数据库(MSSQL)填充ListBoxes和GridView。
我需要一个 JS 或 jQuery 函数,该函数接受所选项的值并按此值过滤gridview行。 例如,当从部门列表框中选择一个部门时,它将仅显示该部门中的条目(隐藏其他部分)。
我知道,如果没有示例代码,这不是一个正确的问题,但在这种情况下我真的需要一些提示。
感谢您的帮助。
答案 0 :(得分:0)
这可能会让你开始。
<强>的jQuery 强>
$("#ListBoxID").change(function() {
$("#" + GridViewID).find('td').not(':contains("' + $(this).val() + '")').parents('tr').hide();
});
如果您的ListBox.SelectionMode
设置为Multiple
,$(this).val()
将包含一系列所选项目,您也必须处理该项目。
答案 1 :(得分:0)
您有几个选择:
您可以使用jQuery Datatables(它会获取您的gridview生成的现有<table>
标记,并使用各种有用选项为其提供支持。然后,您可以使用他们的API添加您的过滤逻辑。这是一个例子:
http://www.datatables.net/release-datatables/examples/plug-ins/range_filtering.html
另一种选择是编写自己的jQuery ajax调用,单击列表框项时会触发该调用。然后它将在您的代码中调用静态Web方法(返回字符串)(并将选定的列表框选项作为参数发送)。您的静态Web方法将使用参数值重新查询数据库以过滤结果。然后,您将在代码中构建gridview,数据将其与查询结果绑定,将gridview转换为html字符串并将其作为对初始jQuery Ajax调用的响应返回。在AJAX调用的success:
回调中,您将获取响应html字符串并将其放入容纳页面上的Gridview的容器html元素中。关于这种方法的更多信息:
如果这看起来很复杂,您可以使用常规回发(而不是AJAX),在列表框上创建选定的索引更改事件,该事件将使用筛选选项重新查询数据库并重新绑定现有的gridview。
希望这有帮助