簡體   English   中英

在下拉列表中顯示從數據庫中選擇的數據

[英]Display Selected Data from database in drop down list

我的目標是在數據庫中選擇數據並顯示在下拉列表中。

例如,請參見下圖,顯示fbMenuId = M001(千層面)。

數據庫1

因此,將在下拉列表中選擇M001選項。 我還需要顯示其他菜單,例如M002,M003,M004,M005,M006和M007。 例如,請參見下圖

數據庫

但是,我的結果是

DDL

以下是我的代碼

<select class="form-control" name="menu" id="menu">
                                            <option value="${order.fbMenuId}" selected>${order.fbMenuName}</option>
                                            <c:forEach var="menu" items="${menu}">
                                                <option value="${menu.fbMenuId}">${menu.fbMenuName}</option>
                                            </c:forEach>

</select>

我可以顯示M001千層面。 但是,有2個我不想要的千層面。 有人請幫助我。 幫助將不勝感激。 提前致謝!

以下是Servlet和數據訪問對象的代碼。

Servlet的

OrderDAO dao = new OrderDAO();
request.setAttribute("order", dao.getOrder(fbOrderId));
request.setAttribute("menu", dao.getMenu(restaurant));

OrderDAO

public OrderBean getOrder(Integer fbOrderId) {

            OrderBean ob = new OrderBean();
            try {
                currentCon = ConnectionManager.getConnection();
                Statement statement = currentCon.createStatement();
                ResultSet rs = statement.executeQuery("SELECT fborders.fbMenuId, fbMenuName FROM fborders INNER JOIN fbmenu ON fborders.fbMenuId = fbmenu.fbMenuId WHERE fbOrderId='"+ fbOrderId + "'");

                while (rs.next()) {
                    ob.setFbMenuId(rs.getString("fbMenuId"));
                    ob.setFbMenuName(rs.getString("fbMenuName"));
                }

            } catch (SQLException e) {
                e.printStackTrace();
            }

            return ob;
        }



public ArrayList getMenu(String restaurant) {

        ArrayList<OrderBean> am = new ArrayList<OrderBean>();
        try {
            currentCon = ConnectionManager.getConnection();
            Statement statement = currentCon.createStatement();
            ResultSet rs = statement
                    .executeQuery("SELECT fbMenuId, fbMenuName FROM fbmenu WHERE fbRestaurantId='"
                            + restaurant + "'");

            while (rs.next()) {
                OrderBean ob = new OrderBean();
                ob.setFbMenuId(rs.getString("fbMenuId"));
                ob.setFbMenuName(rs.getString("fbMenuName"));
                am.add(ob);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return am;
    }

據我了解,您正在兩次顯示所選值。 通過追加一次

  <option value="${order.fbMenuId}" selected>${order.fbMenuName}</option>

還有一次是通過遍歷列表。 取而代之的是填充下拉列表中的所有值,並將所需的值設置為選定的值。 只需編寫以下簡單條件即可。

   <select class="form-control" name="menu" id="menu">         
      <c:forEach var="menu" items="${menu}">
          <option value="${menu.fbMenuId}">${menu.fbMenuName} 
          <c:if test="${menu.fbMenuId == order.fbMenuId}">
           selected
           </c:if>
          </option>
      </c:forEach>
   </select>
<select class="form-control" name="menu" id="menu">
    <c:forEach var="menu" items="${menu}">
        <c:choose>
            <c:when test="${menu.fbMenuId == order.fbMenuId}">
                <option value="${order.fbMenuId}" selected>${order.fbMenuName}</option> 
            </c:when>
            <c:otherwise>
                <option value="${menu.fbMenuId}">${menu.fbMenuName} </option>
            </c:otherwise>
        </c:choose>
    </c:forEach>
</select>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM