我想在保存dataTable前校验“测验成绩”列的值是否符合要求,请各位大侠告诉下小弟如何在前台页面获取这列的值?
dataTable代码如下:<rich:dataTable id="list" border="1" cellpadding="5" cellspacing="0"
var="list" value="#{EcmsCyScoreAction.ecmsStuCyVOList}"
styleClass="listTable" headerClass="listTableHead"
rowClasses="#{config.rowClasses}" rows="100">
<h:column>
<f:facet name="header">
<h:outputText value="测验名称" />
</f:facet>
<h:outputText value="#{list.cyName}">
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="测验学科" />
</f:facet>
<h:outputText value="#{list.subjectName}">
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="测验类型" />
</f:facet>
<h:outputText value="#{list.cyKindName}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="测验分制" />
</f:facet>
<h:outputText value="#{list.pointScaleName}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="学生姓名" />
</f:facet>
<h:outputText value="#{list.stuName}">
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="测验备注" />
</f:facet>
<h:inputText value="#{list.stuCyCommon}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="测验成绩" />
</f:facet>
<h:inputText value="#{list.stuCyScore}" size="4" />
</h:column>
</rich:dataTable>

解决方案 »

  1.   

    你看下RICH:DATATABLE生成的标签是什么样的。。然后用JS获取相应的标签。进行检验。。
    PS:RICH:XXXX这个标签真的用起来会很蛋疼。。性能真糟糕。能不用,就不用~
      

  2.   

    谢谢楼上给的建议,问题已经解决,具体方法如下:
    1、在rich:dataTable标签里面增加rowKeyVar="index"属性
    2、修改要校验的测验成绩输入框如下
    <h:column>
    <f:facet name="header">
    <h:outputText value="测验成绩" />
    </f:facet>
    <h:inputText id="stuCyScore" value="#{list.stuCyScore}" size="4" onchange="checkStuCyScore(#{index})" />
    </h:column>
    3、在js代码中通过如下语句获取rich:dataTable中测验成绩值
    function checkStuCyScore(row) {
    var stuCyScore = document.getElementById("EForm:list:" + row + ":stuCyScore").value;
    }
    注:
    EForm:该页面表单id
    list:该rich:dataTable的id
    stuCyScore:要获取的rich:dataTable中测验成绩列id
      

  3.   

    先给dataTable加一个index属性,
    <p:dataTable id="tableId" rowIndexVar="index"
    <p:commandButton value="test"  onclick="checkData(#{index+1});"function checkData(indexNum){
    var oTable = document.getElementById("tableId");//得到table对象
    var oTd = oTable.rows[indexNum].cells[1];//得到选中行对象第一列
    var tdValue= oTd.innerText;//得到选中行的第一列的值
    }
      

  4.   

    我是要做一个日期验证,要验证的不是inputText的value,代码如下:-----------------------------------------------   
                   <rich:column>
                      <f:facet name="header">
                        <h:outputText value="#{messages['label.ei.locationLineAssoc.effEndDate']}"/>
                      </f:facet>
                      <s:decorate>
                      <mmis:calendar id="ideffEndDate"  name="ideffEndDate" required="true"  value="#{line.effEndDate}" onchanged="checkEndDate(#{index});">
                      </mmis:calendar>
                      </s:decorate>
                    </rich:column>
    -----------------------------------------------
    我用上面的方式做,没弄出来。是不是因为自定义<mmis:calendar>的原因?
      

  5.   

    var effEndDate=document.getElementById("fMain:locationLineAssocs:"+index+":ideffEndDate").value;
    alert(effEndDate+"---");

    我这样取值,没取到