视图名称获取视图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(): 获取视图IDview.getName(): 获取视图名称view.getType(): 获取视图类型view.getFormid(): 获取视图关联的表单IDview.getApplicationid(): 获取视图关联的应用IDfindBySQL(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
- 批量处理多个视图
- 视图信息查询和管理
- 动态视图操作
如需查看完整脚本代码,请访问源文档链接。