在增强的数据网格中设置列值

时间:2016-11-13 01:47:00

标签: javascript datagrid xpages

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

列A,列B和列C.列C先前使用脚本库“ABC”计算,其中两个值在列A和列B上,它们创建了背景Notes文档,然后显示在数据网格上

例如,column A = 12column B = 24,C列的计算结果为397. A列必须使用脚本库ABC进行更改和重新计算。在Save Changes按钮中,给我示例代码,显示如何选择更改的行,使用列A和列B设置两个变量,调用脚本库“ABC”并更新背景Notes文档并重新显示数据网格或更新datagrid并让它更新后台Notes文档。 A列是唯一可编辑的列。

这是代码

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();
    }
});

1 个答案:

答案 0 :(得分:1)

使用dataTable列出所有文件。

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

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

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

  • 基于A和B计算C,功能ABC(A,B)
  • 保存文档
  • 刷新表格

这样,只要用户更改值A,就会自动计算C.

<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>