我试图创建一个基于servlet的应用程序,该应用程序从SQL数据库获取值,并将它们呈现在JSP上的动态创建表中,该表已经正常工作。下一步是创建某种过滤器,仅显示在其中一列中具有特定值的表行。我的想法是添加一个下拉菜单,然后在"问题"中选择包含该项目的行。柱。我相信这有点直截了当。问题在于,填写该下拉菜单的值位于表格中。问题"在SQL数据库上;并且每个行都有id和name属性。目前,我尝试使用name
属性并尝试将其与"问题"进行比较。从我的查询(SQL Server 2008 R2)获得的列(
SELECT h.[name], c.[department], p.[name] AS problem, it.[name] AS interaction, ip.[title], ip.[date]
FROM [Database].[dbo].[Input] ip, [Database].[dbo].[Interaction] it, [Database].[dbo].[Problem] p, [Database].[dbo].[HelpdeskUser] h, [Database].[dbo].[Costumer] c
WHERE h.[id] = ip.[user_id]
AND it.[id] = ip.[interaction_id]
AND c.[id] = ip.[costumer_id]
AND p.[id] = ip.[problem_id]
ORDER BY date DESC";
),但是,显然,我撞到了墙上,因为这不起作用。因此,我想问你是否可以用这种方式帮助我,如果我忽视了一些可以解开整个过程的明显事物。
public class ViewInputServlet extends GenericServlet {
public static final String PROBLEMS = "problems";
public static List<Problem> problems;
private void setProblems(HttpServletRequest req, HttpServletResponse resp) throws EmptyResultSetException {
Session session = HibernateUtilities.getSessionFactory().openSession();
if (ProblemDAO.hasRecords(session)) {
problems = ProblemDAO.selectProblems(session);
req.setAttribute(PROBLEMS, problems);
}
}
}
<% List<Problem> problems = (List<Problem>) request.getAttribute(ViewInputServlet.PROBLEMS); %>
<div class="innerField">
<table class="datatable" id="tableResults">
<thead>
<tr>
<th>NAME</th>
<th>DEPARTMENT</th>
<th>PROBLEM</th>
<th>TITLE</th>
<th>DATE</th>
</tr>
</thead>
<% for (Issue issue : (List<Issue>) request.getAttribute(ViewInputServlet.LIST)) {%>
<tr>
<td><%=issue.getName()%></td>
<td><%=issue.getDepartment()%></td>
<td id="prob_type"><%=issue.getProblem()%></td>
<td><%=issue.getTitle()%></td>
<td><%=issue.getDate()%></td>
</tr>
<%}%>
</table>
<div class="label">Show by Problems: </div>
<div class="field">
<div class="ui-widget">
<select name="<%=ViewInputServlet.PROBLEMS%>" id="chooseProblems">
<%if (problems != null) {
for (Problem problem : problems) {%>
<option value="<%=problem.getName()%>"><%=problem.getName()%></option>
<%}
}%>
</select> <input type="button" value="Reset" id="btn_reset" />
</div>
</div>
</div>
(列#34;问题&#34;关键在于:它是我想要过滤值的那个,这就是为什么我给它一个ID,在之前的尝试中失败了)
$("#chooseProblems").change(function () {
$("#tableResults").find("td").each(function () {
if ($(this).text !== $("#chooseProblems").val())
$(this).hide();
else
$(this).show();
});
});
如果您需要更多信息或对我的推理有疑问,请随便提出:)
答案 0 :(得分:1)
java脚本中的字符串比较是否存在问题?你应该使用匹配方法而不是!==。
另外当你说$(this).text或$(this).hide或$(this).show时,你实际上指的是行列而不是行。