生成下拉框的几种方法总结——数据来源:枚举

上节介绍数据来源是数据库,这节介绍对枚举进行数据获取,形成下拉列表。

使用场景:某些状态值获取等,一般是数据量小,不需要在数据库中进行维护的数据集



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")
  @ResponseBody
  public 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-search
                            autocomplete="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/yyk1226/p/9999328.html

时间: 2024-11-09 00:04:04

生成下拉框的几种方法总结——数据来源:枚举的相关文章

jQuery自定义漂亮的下拉框插件8种效果演示

原始的下拉框不好看这里推荐一个jQuery自定义漂亮的下拉框插件8种效果演示 在线预览 下载地址 实例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 <!DOCTYPE html> <html lang="en" class=

asp.net mvc中 下拉框联动效果 添加方法

首页查询第一级菜单的所有集合List,取到第一级的第一个下标,根据第一个下标查询第二级集合. 这样在页面就显示了 两个下拉select菜单,默认是从数据库查询的是第一个. 根据下拉框选择相应的第二级数据,在页面上面需要写一个ajax提交方法, $(function () { $('#sltCampus').on('change', function() { $.ajax({ type: "POST", url: '/Member/GetRestaurant', data: { camp

selenium操作下拉滚动条的几种方法

数据采集中,经常遇到动态加载的数据,我们经常使用selenium模拟浏览器操作,需要多次下拉刷新页面才能采集到所有的数据,就此总结了几种selenium操作下拉滚动条的几种方法 我这里演示的是Java版本的,使用chromedriver,当然你可以换成python或其他语言,浏览器用firefox或者phantomjs(无头浏览器),大部分都是适用的,不同浏览器有略微的差异. 初始化一个浏览器 首先要允许浏览器运行js脚本 DesiredCapabilities sCaps = new Desi

用JS和C#分别在前端和后端控制下拉框为只读的方法的代码

代码期间,将写代码过程较好的代码段备份一次,下面资料是关于用JS和C#分别在前端和后端控制下拉框为只读的方法的代码,应该对各位朋友有较大用途. <HTML> <HEAD> <TITLE>下拉框模拟只读</TITLE> <script type="text/javascript"> function setReadOnly(obj_id){ var obj = document.getElementById(obj_id); o

AngularJS: 使用ng-option生成下拉框,添加全部选择项

效果图如下: HTML代码: <div class="controls pull-left"> 消费类型: <select id="selectType" ng-model="currentType" ng-options="optiontype.id as optiontype.typeName for optiontype in typemodel"> </select> </di

maven一模块字段调用另一个模块数据生成下拉框

店铺运营数据录入表实现的下拉框实现 从片区管理中提取分区数据,在招商管理(MIS)模块中获取并以下拉框的形式展现 ctrl类: 1.首先在ctrl类注入需提取另一模块字段的serviceclient接口类 2.编写begin()方法,提取数据 3.begin()方法调用一转化Json方法:  4.在进入页面index()方法中调用begin方法: 页面  .ftl  文件: 1.注入model 2.页面显示  3.弹框中下拉框字段 4.查看详情弹框 结果显示:

吾八哥学Selenium(四):操作下拉框select标签的方法

我们在做web页面自动化测试的时候会经常遇到<select></select>标签的下拉框,那么在Python里如何实现去操作这种控件呢?今天就给大家分享一下这个玩法.为了让大家学习更方便,我准备了一个测试页面. 测试的html页面代码为: <html> <head> <title>学Python网 - Selenium学习测试页面</title> <body> 请选择2018年春节回家的方式! <select id

带输入查询功能匹配下拉框的几种实现方式

在Web开发中我们经常需要用户进行输入操作,输入框内我们输入几个字,输入框就会出现下拉提示你可能要输入的完整信息.下面我总结了几种常见的方案: 一:EasyUi combobox 组合框 具体使用方法官方文档上有详细介绍:http://www.jeasyui.net/plugins/169.html. 当然,你若觉得样式不怎么好看,引入easyui的 js 和css,可以进行简单的样式调整如下: .textbox { webkit-border-radius: 0px; border-radiu

可编辑下拉框的2种实现方式_javascript技巧_

可编辑的下拉框一.  <div style="position:relative;"> <select style="width:120px;" onchange="document.getElementById('input').value=this.value"> <option value="A类">A类</option> <option value="B类