生成下拉框的几种方法总结——数据来源:枚举
生活随笔
收集整理的這篇文章主要介紹了
生成下拉框的几种方法总结——数据来源:枚举
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上節介紹數據來源是數據庫,這節介紹對枚舉進行數據獲取,形成下拉列表。
使用場景:某些狀態值獲取等,一般是數據量小,不需要在數據庫中進行維護的數據集
?
1、前提要有枚舉數據
package com.test.entity.neworder;import java.util.Objects;/*** 新訂單狀態** @author 劉濤*/ public enum NewOrderStateEunm {//已刪除已刪除(0, "已刪除"),//已創建已創建(1, "已創建"),//已發布已發布(2, "已發布"),Integer index;String state;NewOrderStateEunm(Integer index, String state) {this.index = index;this.state = state;}public Integer getIndex() {return index;}public String getState() {return state;}/*** 通過index獲取value** @param index 枚舉索引* @return 枚舉值*/public static String getValue(Integer index) {for (NewOrderStateEunm c : NewOrderStateEunm.values()) {if (Objects.equals(c.getIndex(), index)) {return c.getState();}}return null;}/*** 通過value獲取index** @param state 枚舉值* @return 枚舉索引*/public static String getIndex(String state) {for (NewOrderStateEunm c : NewOrderStateEunm.values()) {if (Objects.equals(c.getState(), state)) {return c.index + "";}}return "error";} }2、Controller層
/*** 獲取訂單狀態類型*/@RequestMapping("/getNewOrderStateForSelect")@ResponseBodypublic List<Map<String, Object>> getNewOrderStateForSelect() {return EnumUtil.getNewOrderStateEnum();}3、EnumUtil工具類文件中
package com.test.util;import com.test.entity.neworder.NewOrderStateEunm;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class EnumUtil {public static List<Map<String, Object>> getNewOrderStateEnum() {List<Map<String, Object>> lm = new ArrayList<>();Map<String, Object> m;for (int i = 0; i < NewOrderStateEunm.values().length; i++) {m = new HashMap<>();m.put("id", NewOrderStateEunm.values()[i].getIndex() + "");m.put("type", NewOrderStateEunm.values()[i].getState());lm.add(m);}return lm;} }4、前端頁面
<select type="text" id="stateCode" name="state" lay-filter="state" lay-searchautocomplete="off"></select>5、由于我使用的是layui,所以js部分
<script type="text/javascript">var $ = layui.jquery;$(function () {getNewOrderStateForSelect("stateCode");});/*** 獲取訂單狀態列表* @param selectId*/ function getNewOrderStateForSelect(selectId) {var $selectId = $("#" + selectId);var url = "commonCtrl/getNewOrderStateForSelect";$.get(url, function (data) {console.log(data);var info = "<option value=''>請選擇</option>";for (var i = 0; i < data.length; i++) {info += "<option value=" + data[i].id + ">" + data[i].type + "</option>";}$selectId.append(info);layui.use('form', function () {var form = layui.form;form.render('select');})}) }</script>?完畢!
昨天還遇到一個比較復雜的獲取方式:后臺將枚舉寫的復雜了。如下:
for(int i=0;i< SettleTypeNewEnum.values().length;i++){Map code=new HashMap();code.put(SettleTypeNewEnum.values()[i].getType(),SettleTypeNewEnum.values()[i].getIndex());payMethodCodeList.add(code);}所以,前端獲取到的是{[object object],[object object]},用json解析一下就是{[張三:12],[李四:23]}這種格式,
但是我想獲取其中的值,直接調用對象中的屬性,暫未發現有什么屬性能直接獲取到數據。
so,只能利用以下這種方式解決了:
function getNewPayMethodTypeForSelect(selectId) {var $selectId = $("#" + selectId);var url = "newSettleCtrl/getPayMethodCode";$.get(url, function (data) {var info = "<option value=''>請選擇</option>";$.each(data.data,function(i,v){info += "<option value=" + v[Object.keys(v)[0]] + ">" + Object.keys(v)[0] + "</option>";});$selectId.append(info);layui.use('form', function () {var form = layui.form;form.render('select');})}) }?
轉載于:https://www.cnblogs.com/yangyuke1994/p/9999328.html
總結
以上是生活随笔為你收集整理的生成下拉框的几种方法总结——数据来源:枚举的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css如何实现div背景透明
- 下一篇: Arduino IDE 配置文件