基于当前行的列值之一在xPage上计算DOJO数据网格内的组合框值

时间:2013-12-15 13:36:33

标签: datagrid combobox dojo xpages

我需要计算(使用ssjs)组合框内的选项,它在Dojo数据网格中包含一个可编辑的列。需要基于同一行中的列值来计算组合框值。例如,如果列B的值为“1”,则列E中的选择应显示选项5,10,15,如果列B中的值为“2”,则选项应为10,20,30。 更新:以下是我的代码,直到现在,我需要填写标记为“相对排名 - SC级别1”,“相对排名 - SC级别2”和“相对排名 - SC级别3”的列中的值,具体取决于“Grade Cluster”列。根据特定行的成绩群集,我需要计算具有特定成绩群集的文档数量,并相应地填充相对等级。例如,如果有10行具有成绩聚类“G1”,那么我需要在成绩聚类为“G1”的每一行的相对排名列中填充值1/10到10/10。

<?xml version="1.0" encoding="UTF-8"?><xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
dojoTheme="true" dojoParseOnLoad="true">
<xp:this.resources>
    <xp:dojoModule name="dojox.grid.cells.dijit"></xp:dojoModule>
    <xp:styleSheet href="/Dojo_Grid_Style.css"></xp:styleSheet>
</xp:this.resources>
<xp:this.beforePageLoad><![CDATA[#{javascript:var key = sessionScope.key;
    var curDB:NotesDatabase = session.getCurrentDatabase();
    var vwlkApprView:NotesView;
    var collDocAppr:NotesDocumentCollection;
    vwlkApprView = curDB.getView("vwlkApprSCID");
    collDocAppr = vwlkApprView.getAllDocumentsByKey(key);

    viewScope.scApprDocCount = collDocAppr.getCount();}]]></xp:this.beforePageLoad>
 <xp:panel id="pnlScreening" style="height:auto;width:100.0%">
    <xe:restService id="SCViewData">
         <xe:this.service>
            <xe:viewItemFileService viewName="vwlkApprSCID"
                defaultColumns="true" keys="#  {javascript:sessionScope.key;}"
                keysExactMatch="true" var="apprDoc">
                <xe:this.columns>
                    <xe:restViewColumn name="rrValues">
                        <xe:this.value><![CDATA[# {javascript:var apprRow = requestScope.get("apprDoc");print(apprRow);}]]></xe:this.value>
                    </xe:restViewColumn>
                </xe:this.columns>
            </xe:viewItemFileService>
        </xe:this.service>
    </xe:restService>
    <xe:djxDataGrid id="djxDataGrid1" selectionMode="single"
        rowsPerPage="90" autoHeight="100" singleClickEdit="true"
        storeComponentId="SCViewData" jsId="apprSCGird">
        <xe:djxDataGridColumn id="djxDataGridColumn1"
            field="AppraiseeEmpID" label="E.No" width="2%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn2"
            field="AppraiseeName" label="E.Name" width="6%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn3"
            field="Appraisee_Grade" label="Grade" width="2%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn4"
            field="AppraiseeCWLCluster" label="Grade Cluster" width="2%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn5"
            field="AppeTotImpRate" label="Appraisee Impacted Rating" width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn6"
            field="ApprTotImpRate" label="Appraiser Impacted Rating" width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn7"
            field="RevTotImpRate" label="Reviewer Impacted Rating" width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn8"
            field="ApperFinalGrade" label="Appraiser Final Grades" width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn17"
            field="ApperRelativeRank" label="Appraiser Relative Ranks" width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn9"
            field="RevFinalGrade" label="Reviewer Final Grades" width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn10"
            field="RevRelativeRank" label="Reviewer Relative Ranks" width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn11"
            field="SCFinalGradeL1" label="Final Grading - SC Level 1" width="5%"
            editable="true" cellType="dojox.grid.cells.Select">
            <xe:this.options><![CDATA[#{javascript:var states = ['1', '2', '3', '4', '5'];return states;}]]></xe:this.options></xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn12" field="SCRelativeRankL1" label="Relative Ranking - SC Level 1"               width="5%" editable="true" cellType="dojox.grid.cells.Select">      </xe:djxDataGridColumn> <xe:djxDataGridColumn id="djxDataGridColumn13"          field="SCFinalGradeL2" label="Final Grading - SC Level 2" width="5%"></xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn14"
            field="SCRelativeRankL2" label="Relative Ranking - SC Level 2"
            width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn15"
            field="SCFinalGradeL3" label="Final Grading - SC Level 3" width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn16"
            field="SCRelativeRankL3" label="Relative Ranking - SC Level 3"
            width="5%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn18"
            field="AppraiserName" label="Appraiser Name" width="6%">
        </xe:djxDataGridColumn>
        <xe:djxDataGridColumn id="djxDataGridColumn19"
            field="ReviewerName" label="Reviewer Name" width="6%">
        </xe:djxDataGridColumn>
        <xp:eventHandler event="onRowClick" submit="true"
            refreshMode="partial" refreshId="pnlScreening">
        </xp:eventHandler>
    </xe:djxDataGrid>
</xp:panel></xp:view>

1 个答案:

答案 0 :(得分:0)

Dojo网格定义在生成时无法访问实际值。在通过Ajax调用组成网格之后加载它们。您想要做的是需要客户端脚本,而不是xp标记或SSJS。

检查this tutorial以获取一些想法并报告进度。

重要提示:密切注意:工作结果应该是什么,而不是“我的方法是否有用”