组件版设计器自定制之限制tableName的输入
背景:在designer中,用户可以通过下图方式修改tableName。
有客户提出这样一个需求:业务中不希望用户将tableName设置为中文,如何限制中文字符的输入呢?
实现方式:
工具栏中tableName输入对应的命令为 'Designer.setTableName',所以可以通过重写execute方法从中加以干预。
var setTableNameFn = spread.commandManager()['Designer.setTableName'].execute;
spread.commandManager()['Designer.setTableName'].execute = function (context, options, actionType) {
// do sth
}
其次,因为需要限制中文字符的输入,所以可以结合正则表达式对用户输入的tableName 字符串做下校验。
function hasChinese(str) {
return /[\u4e00-\u9fa5]/.test(str);
}最后,判断如果包含中文字符,则弹出错误提示对话框;如果不包含,则正常执行原命令逻辑。
完整代码如下:
var setTableNameFn = spread.commandManager()['Designer.setTableName'].execute;
spread.commandManager()['Designer.setTableName'].execute = function (context, options, actionType) {
function hasChinese(str) {
return /[\u4e00-\u9fa5]/.test(str);
}
if (options.newTableName && !hasChinese(options.newTableName)) {
return setTableNameFn.apply(this, arguments);
} else {
GC.Spread.Sheets.Designer.showMessageBox("无效表名,请勿输入中文字符", "错误提示", GC.Spread.Sheets.Designer.MessageBoxIcon.error);
}
}
来看下实现效果:
完整代码请参考附件demo。
页:
[1]