关于视图中获取数据表格的值且选中后赋值到表单的咨询
视图中获取数据表格的值,可以采用datagrid.data.*.datagrid_datagrid$Title_1.textfield(数据网格标识+“.data.”+“*”+“列标识”+“.”+对应列的字段标识)的方式来显示,想请问下如果表单中调取视图后想将选中的一条记录的这个值又赋值到当前表单中,比如下面的脚本是将文本类控件的值赋给当前表单中控件,那数据表格中的怎么赋值到当前表单的数据表格中呢。this.view.select({
"application": "dc2a3ae7-89a3-49d1-a391-fbba9237ba75",
"view": "xmxxbdlx", //视图的名称
"isMulti": false, //只允许单选
"filter": [ //(Array of Object)可选,对视图进行过滤的条件。json数组格式,每个数组元素描述一个过滤条件。
{
"logic":"and",
"path":"ygbh",
"comparison":"==",
"value": this.workContext.getWork().creatorPersonDn,
"formatType":"textValue"
}
]
}, function(items) {
//如果选择了某个数据,将数据赋值给表单输入框
if (items.length) {
this.form.get("bh").setData(items.data.bh);
this.form.get('xmqc').setData(items.data.xmqc);
一样的通过setData赋值 本帖最后由 zningsc 于 2022-12-28 09:43 编辑
但是这里有个问题,是不是表单中如果本来数据表格没有记录,直接setdata无法写入,需要先添加记录才行呢?比如我的数据表id是syfxx,列中的字段名是syf、mcdz、lxr、zw,视图中是使用方列是用的syfxx.data.*.*来获取的。我用this.form.get("syfxx").setData(items[0].data.syfxx)并不能在选择视图后将视图的该列值填入到表单中,前面其他列的可以填入,请问这是什么原因呢?
我测试了,选择视图之前添加了空行也不能赋值进去,请问是哪里没弄对么 您是在数据表格外选择视图,然后给数据表格添加一行吗,可以使用datatable的addLine方法,详情参考一下api
如果您是给数据表格添加一行后再弹出视图选择,然后给这一行赋值,可以参考应用市场的固定资产或办公用品,都有这个功能 是在数据表格外选择视图,选择后将视图中syfxx.data.*.*那一列的信息赋值到当前表单的syfxx数据表格中,不管我是通过addLine方法添加空行,或是手工添加空行,然后选视图,都赋值不了。是不是赋值的方法不对,我用的是this.form.get("syfxx").setData(items.data.syfxx) 明白了,这个写法this.form.get("syfxx").setData(items.data.syfxx)是不行的。我看到固定资产中的脚本是这样,请问this.target.json.id.split("..")这句是什么意思呢,另外我和固定资产不一样,是在数据表格的外面调取视图并选择,那是不是意味着需要加空行,空行是在哪里加呢,是在这个if中还是说在表单AFTERLOAD中,
if (items.length) {
var lid = this.target.json.id.split("..");
var cline = lid;//获取当前行
this.form.get("datatable").getModule(cline, "name").setData(items.data.name);
this.form.get("datatable").getModule(cline, "model").setData(items.data.model);
this.form.get("datatable").getModule(cline, "unit").setData(items.data.unit);
this.form.get("datatable").getModule(cline, "stock").setData(items.data.number);
} 这个示例应该只是将视图中的列值填入到当前行对应列,但如果我想要同时填入其他行呢,items.data.name是取的视图中该列的所有值,怎么实现让他分别填到不同行中呢,如下图,表格有两行记录,四列
视图中看到是第二张图的样子
在另一个表单中选择视图后填入的效果是这样,每行都把视图的两个值都填进去了。
脚本如下
, function(items) {
//如果选择了某个数据,将数据赋值给表单输入框
if (items.length) {
for( var i=0; i<items[0].data.syfxx.length; i++ ){
this.form.get("syfxx").addLine();
this.form.get("syfxx").getModule(i, "syf").setData(items[0].data.syf);
this.form.get("syfxx").getModule(i, "mcdz").setData(items[0].data.mcdz);
this.form.get("syfxx").getModule(i, "lxr").setData(items[0].data.lxr);
this.form.get("syfxx").getModule(i, "zw").setData(items[0].data.zw);
}
请问如何才能实现我想要的结果呢,谢谢
管理员的意思是您是在外部添加行的,就可以直接带数据添加,addLine(data);
但同样有这个问题啊,添加数据只能一行,而items.data.syf)取的是视图那一列的所有行的值,赋过来还是会成我上面截图的样子,把几行数据赋到一行的上面
页:
[1]
2