跳转至

视图名称获取视图id

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f7tkqg7igrj4

脚本说明

该脚本用于根据视图名称获取视图ID。在MyApps平台中,可以通过视图名称查找对应的视图ID,用于后续的视图操作。

常见实现方式

方式1:通过视图Process获取视图ID

(function(){
    var viewName = "视图名称";
    var viewProcess = getViewProcess();
    var view = viewProcess.doViewByViewName(viewName, getApplication());

    if(view != null){
        var viewId = view.getId();
        return viewId;
    }

    return "";
})();

方式2:通过SQL查询获取视图ID

(function(){
    var viewName = "视图名称";
    var applicationId = getApplication();
    var sql = "SELECT id FROM t_view WHERE name = '" + viewName + "' AND applicationid = '" + applicationId + "'";
    var result = findBySQL(sql);

    if(result != null){
        return result.getId();
    }

    return "";
})();

方式3:获取视图ID并打印

(function(){
    var viewName = "视图名称";
    var viewProcess = getViewProcess();
    var view = viewProcess.doViewByViewName(viewName, getApplication());

    if(view != null){
        var viewId = view.getId();
        println("视图名称: " + viewName);
        println("视图ID: " + viewId);
        return viewId;
    }

    println("未找到视图: " + viewName);
    return "";
})();

方式4:根据表单名称和视图名称获取视图ID

(function(){
    var formName = "表单名称";
    var viewName = "视图名称";
    var applicationId = getApplication();

    // 先获取表单ID
    var formProcess = getFormProcess();
    var form = formProcess.doViewByFormName(formName, applicationId);

    if(form != null){
        var formId = form.getId();
        // 查询该表单下的视图
        var sql = "SELECT id FROM t_view WHERE name = '" + viewName + "' AND formid = '" + formId + "'";
        var result = findBySQL(sql);

        if(result != null){
            return result.getId();
        }
    }

    return "";
})();

扩展示例

示例1:获取视图ID并验证

(function(){
    var viewName = "视图名称";
    var viewProcess = getViewProcess();
    var view = viewProcess.doViewByViewName(viewName, getApplication());

    if(view != null){
        var viewId = view.getId();
        var viewType = view.getType();  // 获取视图类型

        println("视图ID: " + viewId);
        println("视图类型: " + viewType);

        return viewId;
    }else{
        println("错误: 未找到视图 '" + viewName + "'");
        return "";
    }
})();

示例2:批量获取多个视图ID

(function(){
    var viewNames = ["视图1", "视图2", "视图3"];
    var viewProcess = getViewProcess();
    var applicationId = getApplication();
    var viewIds = {};

    for(var i = 0; i < viewNames.length; i++){
        var viewName = viewNames[i];
        var view = viewProcess.doViewByViewName(viewName, applicationId);

        if(view != null){
            viewIds[viewName] = view.getId();
            println(viewName + " -> " + view.getId());
        }else{
            println("未找到视图: " + viewName);
        }
    }

    return JSON.stringify(viewIds);
})();

示例3:根据视图名称获取视图并获取详细信息

(function(){
    var viewName = "视图名称";
    var viewProcess = getViewProcess();
    var view = viewProcess.doViewByViewName(viewName, getApplication());

    if(view != null){
        var viewId = view.getId();
        var viewInfo = {
            id: viewId,
            name: view.getName(),
            type: view.getType(),
            formId: view.getFormid(),
            applicationId: view.getApplicationid()
        };

        println("视图信息: " + JSON.stringify(viewInfo));
        return viewId;
    }

    return "";
})();

示例4:通过参数传入视图名称

(function(){
    var viewName = getParameter("viewName");

    if(viewName == null || viewName.trim().length == 0){
        viewName = "默认视图名称";
    }

    var viewProcess = getViewProcess();
    var view = viewProcess.doViewByViewName(viewName, getApplication());

    if(view != null){
        return view.getId();
    }

    return "";
})();

示例5:获取当前表单的所有视图ID

(function(){
    var formName = "表单名称";
    var formProcess = getFormProcess();
    var form = formProcess.doViewByFormName(formName, getApplication());

    if(form != null){
        var formId = form.getId();
        var sql = "SELECT id, name FROM t_view WHERE formid = '" + formId + "'";
        var views = queryBySQL(sql);

        var viewList = [];
        if(views != null && views.size() > 0){
            for(var it = views.iterator(); it.hasNext();){
                var view = it.next();
                viewList.push({
                    id: view.getId(),
                    name: view.getItemValueAsString("name")
                });
            }
        }

        return JSON.stringify(viewList);
    }

    return "[]";
})();

示例6:视图名称和ID的映射表

(function(){
    var viewNameToIdMap = {};
    var applicationId = getApplication();
    var sql = "SELECT id, name FROM t_view WHERE applicationid = '" + applicationId + "'";
    var views = queryBySQL(sql);

    if(views != null && views.size() > 0){
        for(var it = views.iterator(); it.hasNext();){
            var view = it.next();
            var viewId = view.getId();
            var viewName = view.getItemValueAsString("name");
            viewNameToIdMap[viewName] = viewId;
        }
    }

    // 根据视图名称获取ID
    var targetViewName = "目标视图名称";
    var targetViewId = viewNameToIdMap[targetViewName];

    if(targetViewId != null){
        return targetViewId;
    }

    return "";
})();

示例7:错误处理和日志记录

(function(){
    var viewName = "视图名称";
    var applicationId = getApplication();

    try{
        var viewProcess = getViewProcess();
        var view = viewProcess.doViewByViewName(viewName, applicationId);

        if(view != null){
            var viewId = view.getId();
            println("成功获取视图ID: " + viewId + " (视图名称: " + viewName + ")");
            return viewId;
        }else{
            println("警告: 未找到视图 '" + viewName + "' (应用ID: " + applicationId + ")");
            return "";
        }
    }catch(e){
        println("错误: 获取视图ID失败 - " + e.getMessage());
        return "";
    }
})();

关键函数说明

  • getViewProcess(): 获取视图处理对象
  • viewProcess.doViewByViewName(viewName, applicationId): 根据视图名称获取视图对象
  • view.getId(): 获取视图ID
  • view.getName(): 获取视图名称
  • view.getType(): 获取视图类型
  • view.getFormid(): 获取视图关联的表单ID
  • view.getApplicationid(): 获取视图关联的应用ID
  • findBySQL(sql): 执行SQL查询并返回单条记录
  • queryBySQL(sql): 执行SQL查询并返回多条记录
  • getApplication(): 获取当前应用ID

视图表结构说明

视图信息通常存储在 t_view 表中,主要字段包括: - id: 视图ID - name: 视图名称 - formid: 关联的表单ID - applicationid: 关联的应用ID - type: 视图类型

注意事项

  • ⚠️ 视图名称: 确保视图名称准确,区分大小写
  • ⚠️ 应用ID: 需要指定正确的应用ID,否则可能找不到视图
  • ⚠️ 视图存在性: 获取视图前建议先判断视图是否存在
  • ⚠️ 错误处理: 建议添加try-catch进行错误处理
  • ⚠️ 空值处理: 如果视图不存在,返回空字符串或null
  • 视图名称在同一个应用内应该是唯一的
  • 可以通过视图名称获取视图对象,然后获取视图ID
  • 也可以直接通过SQL查询视图表获取视图ID

使用场景

  • 根据视图名称动态获取视图ID
  • 视图跳转时使用视图ID
  • 批量处理多个视图
  • 视图信息查询和管理
  • 动态视图操作

如需查看完整脚本代码,请访问源文档链接。