跳转至

下拉框json格式获取

下拉框json格式获取示例代码:

(function(){
    var opts = createOptions(); //创建指定类对象
    println("opts"+opts);
    opts.add("A","A");
    opts.add("B","B");
    opts.add("C","C");
    var optsJsonsStr = opts.toJSON();   //返回格式{'A': 'A','B': 'B','C': 'C'}
    var optsJsons = opts.toJsonSuggest();  //返回格式[{"name":"A","id":"A"},{"name":"B","id":"B"},{"name":"C","id":"C"}]
    return optsJsonsStr;
})()

脚本说明

该脚本用于创建下拉框选项并转换为JSON格式。使用 createOptions() 创建选项对象,添加选项后,可以通过 toJSON()toJsonSuggest() 方法转换为不同的JSON格式。

脚本功能

  1. 创建选项对象: 使用 createOptions() 创建选项对象
  2. 添加选项: 使用 opts.add(id, name) 添加选项
  3. 转换为JSON: 使用 toJSON()toJsonSuggest() 转换为JSON格式
  4. 返回JSON字符串: 返回JSON格式的字符串

JSON格式说明

toJSON() 格式

返回对象格式的JSON字符串:

{'A': 'A','B': 'B','C': 'C'}

toJsonSuggest() 格式

返回数组格式的JSON字符串:

[{"name":"A","id":"A"},{"name":"B","id":"B"},{"name":"C","id":"C"}]

使用场景

  • 动态生成下拉框选项
  • 将选项数据转换为JSON格式
  • 下拉框数据格式化
  • 选项数据传递

扩展示例

示例1:从数据库查询生成选项

(function(){
    var opts = createOptions();
    var sql = "select domainid,item_名称,item_编码 from tlk_数据表";
    var datas = queryBySQL(sql);

    if(datas != null && datas.size() > 0){
        for(var it = datas.iterator(); it.hasNext(); ){
            var data = it.next();
            var id = data.getItemValueAsString("编码");
            var name = data.getItemValueAsString("名称");
            opts.add(id, name);
        }
    }

    return opts.toJsonSuggest();
})();

示例2:从当前文档字段生成选项

(function(){
    var doc = getCurrentDocument();
    var opts = createOptions();

    // 从字段值生成选项
    var fieldValue = doc.getItemValueAsString("字段名");
    if(fieldValue != null && fieldValue.trim().length > 0){
        var values = fieldValue.split(";");
        for(var i = 0; i < values.length; i++){
            var value = values[i].trim();
            if(value.length > 0){
                opts.add(value, value);
            }
        }
    }

    return opts.toJSON();
})();

示例3:根据条件生成选项

(function(){
    var doc = getCurrentDocument();
    var condition = doc.getItemValueAsString("条件字段");
    var opts = createOptions();

    if(condition != null && condition === "类型1"){
        opts.add("1", "选项1");
        opts.add("2", "选项2");
    }else{
        opts.add("3", "选项3");
        opts.add("4", "选项4");
    }

    return opts.toJsonSuggest();
})();

示例4:固定选项列表

(function(){
    var opts = createOptions();

    // 添加固定选项
    opts.add("", "请选择");
    opts.add("1", "选项一");
    opts.add("2", "选项二");
    opts.add("3", "选项三");

    return opts.toJsonSuggest();
})();

示例5:从用户列表生成选项

(function(){
    var opts = createOptions();
    var users = getUsersByRole("角色名称");

    if(users != null && users.size() > 0){
        for(var i = 0; i < users.size(); i++){
            var user = users.get(i);
            opts.add(user.getId(), user.getName());
        }
    }

    return opts.toJsonSuggest();
})();

示例6:从部门列表生成选项

(function(){
    var opts = createOptions();
    var departments = getDepartments();

    if(departments != null && departments.size() > 0){
        for(var i = 0; i < departments.size(); i++){
            var dept = departments.get(i);
            opts.add(dept.getId(), dept.getName());
        }
    }

    return opts.toJSON();
})();

关键函数说明

  • createOptions(): 创建选项对象,用于管理下拉框选项
  • opts.add(id, name): 添加选项
  • 参数1: 选项ID(值)
  • 参数2: 选项名称(显示文本)
  • opts.toJSON(): 转换为对象格式的JSON字符串
  • 返回格式: {'id': 'name', ...}
  • opts.toJsonSuggest(): 转换为数组格式的JSON字符串
  • 返回格式: [{"name":"显示名","id":"值"}, ...]

两种JSON格式对比

toJSON() 格式

{'A': 'A','B': 'B','C': 'C'}
  • 格式: 对象格式
  • 用途: 简单的键值对映射
  • 特点: 键和值相同或不同都可以

toJsonSuggest() 格式

[{"name":"A","id":"A"},{"name":"B","id":"B"},{"name":"C","id":"C"}]
  • 格式: 数组格式,每个元素包含name和id
  • 用途: 下拉框建议列表、自动完成等
  • 特点: 结构更清晰,便于前端处理

选项添加说明

基本用法

opts.add("值", "显示文本");
  • 第一个参数: 选项的值(ID),用于提交和存储
  • 第二个参数: 选项的显示文本(名称),用于显示给用户

示例

opts.add("1", "选项一");  // 值为"1",显示为"选项一"
opts.add("2", "选项二");  // 值为"2",显示为"选项二"

注意事项

  • ⚠️ ID和名称可以不同: opts.add(id, name) 中ID和名称可以是不同的值
  • ⚠️ JSON格式选择: 根据前端需求选择 toJSON()toJsonSuggest()
  • ⚠️ 空值处理: 添加选项前建议判断数据是否为空
  • createOptions() 创建的对象是平台提供的特殊对象
  • toJSON() 返回的是对象格式,适合简单的键值对
  • toJsonSuggest() 返回的是数组格式,适合需要name和id分离的场景
  • 选项的顺序按照添加的顺序排列
  • 可以添加空选项作为默认选项(如"请选择")

常见应用

  1. 动态下拉框: 根据条件动态生成下拉框选项
  2. 数据格式化: 将数据转换为下拉框需要的JSON格式
  3. 选项传递: 在不同脚本之间传递选项数据
  4. 数据绑定: 将数据库数据绑定到下拉框
  5. 级联选择: 实现级联下拉框的数据源

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1fb4d11cdtdkj
文档更新时间: 2024-01-22 03:18 作者:john