首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在增强的数据集中设置列值

在增强的数据集中设置列值
EN

Stack Overflow用户
提问于 2016-11-13 01:46:59
回答 1查看 117关注 0票数 2

如果我有一个带有datagrid的xpage,则使用Rest服务。在datagrid中有两个记录作为单独的记录存储在Notes中。用户编辑xpage并编辑数据网格中的一行列。

有A列、B列和C列。C列以前是使用脚本库"ABC“计算的,其中A列和B列有两个值,它们创建背景说明文档,然后显示在数据集上。

column A = 12column B = 24、C列为例,计算出397列。列A必须使用脚本库ABC更改和重新计算。在Save Changes按钮中,给出示例代码,演示如何选择已更改的行,设置两个变量(A列和B列),调用脚本库"ABC“,更新背景说明文档,重新显示数据集或更新数据集,并让它更新后台Notes文档。列A是唯一可编辑的列。

这是代码

代码语言:javascript
运行
复制
var rsStore = restServiceObj;
var items = gridObj.selection.getSelected();

dojo.forEach(items, function(selectedItem) {
    if(selectedItem != null) {
        viewScope.ColA = rsEntry.getColumnValue("A");
        viewScope.ColB = rsEntry.getColumnValue("B");
        var ans = ABC();
    }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-16 21:07:26

使用dataTable列出所有文档。

在属性value中计算要列出的所有NotesDocuments。

将列A作为可编辑字段添加,将B和C作为只读字段添加到dataTable中。

onchange事件添加到A列的可编辑字段中:

  • 用ABC(A,B)函数基于A和B计算C
  • 保存文档
  • 刷新表

这样,每当用户更改值A时,就会自动计算C。

代码语言:javascript
运行
复制
<xp:panel id="panelTable">
    <xp:dataTable id="dataTable1"
        rows="100"
        var="doc">
        <xp:this.value><![CDATA[#{javascript:
            var documents = [];
            var col = view1.getAllEntriesByKey("yourKey", true);
            var entry = col.getFirstEntry();
            while (entry != null) {
                documents.push(entry.getDocument());
                entry = col.getNextEntry(entry);
            }
            return documents;
        }]]></xp:this.value>
        <xp:column id="column1">
            <xp:this.facets>
                <xp:span xp:key="header">A</xp:span>
            </xp:this.facets>
            <xp:inputText id="inputText1" value="#{doc.A}">
                <xp:eventHandler
                    event="onchange"
                    submit="true"
                    refreshMode="partial"
                    refreshId="panelTable">
                    <xp:this.action><![CDATA[#{javascript:
                        var A = doc.getItemValue("A").get(0);
                        var B = doc.getItemValue("B").get(0);
                        doc.replaceItemValue("C", ABC(A, B));
                        doc.save();
                        view1.refresh();
                    }]]></xp:this.action>
                </xp:eventHandler>
            </xp:inputText>
        </xp:column>
        <xp:column id="column2">
            <xp:this.facets>
                <xp:span xp:key="header">B</xp:span>
            </xp:this.facets>
            <xp:text id="computedField3" value="#{doc.B}" />
        </xp:column>
        <xp:column id="column3">
            <xp:this.facets>
                <xp:span xp:key="header">C</xp:span>
            </xp:this.facets>
            <xp:text id="computedField2" value="#{doc.C}" />
        </xp:column>
    </xp:dataTable>
</xp:panel>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40569694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档