使用SQL数据库中的值过滤JSP上的表值

时间:2015-02-24 12:14:02

标签: java javascript ajax jsp servlets

我试图创建一个基于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";

),但是,显然,我撞到了墙上,因为这不起作用。因此,我想问你是否可以用这种方式帮助我,如果我忽视了一些可以解开整个过程的明显事物。

ViewInputServlet.java

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);
        }
    }
}

ViewInput.jsp

<% 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,在之前的尝试中失败了)

Functions.js

$("#chooseProblems").change(function () {
    $("#tableResults").find("td").each(function () {
        if ($(this).text !== $("#chooseProblems").val())
            $(this).hide();
        else
            $(this).show();
    });
});

如果您需要更多信息或对我的推理有疑问,请随便提出:)

1 个答案:

答案 0 :(得分:1)

java脚本中的字符串比较是否存在问题?你应该使用匹配方法而不是!==。

另外当你说$(this).text或$(this).hide或$(this).show时,你实际上指的是行列而不是行。