验证LiveCycle表单中的表行

时间:2014-01-29 22:31:58

标签: livecycle

我正在开发一个LiveCycle表单,其上有一个表,可以有可变的行数。我想只在其中一列中有数据而不是所有列中的数据时才验证它。因此,如果行为空或者该行中的所有列都已填入,我将跳过验证。

任何想法如何做到这一点。我如何遍历表格的行。

提前致谢, 保罗

3 个答案:

答案 0 :(得分:1)

您可以将脚本置于单元格或整行的验证事件中。验证脚本的结果由最后一行结果确定( true false );要使验证失败,您可以设置表单级别验证(文件 - >表单属性 - >表单验证 - >彩色失败字段)。

另一种方法(我个人更喜欢)是在满足某些条件时使用代码fieldName.manadatory = "error"根据需要设置字段。为了使字段可选,只需添加fieldName.manadatory = "disabled"

答案 1 :(得分:1)

我会通过替换非常慢的 resolveNodes 来稍微调整你的答案。

  • 为了获得行数,您可以使用instanceManager TrainerForm._TrainerTable.count

  • 要从行列表中获取特定项目,请使用<RowName>.all.item(index)。使用此构造时要小心,因为它至少需要一行。 RowRow[0]的一个shourtcat。

以下是我的升级代码:

var rowCount = TrainerForm.TrainerTable._TrainerData.count;
for (var i=0;i<rowCount;i++)
{
    if (TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerName.rawValue == null && 
        TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerPrepHrs.rawValue == null && 
        TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerArea.selectedIndex == -1 && 
        TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerActivity.rawValue == null ) 
        ;//check the case where all rows are blank which is valid
    else
    {
        if (TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerName.rawValue == null)
        {
           TrainerTableValid = false;          
           TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerName.ui.#textEdit.border.fill.color").value = "255,0,0";
        }
        if (TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerPrepHrs.rawValue == null)
        {
            TrainerTableValid = false;          
            TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerPrepHrs.ui.#numericEdit.border.fill.color").value = "255,0,0";
        }
        if (TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerArea.selectedIndex == -1)
        {
            TrainerTableValid = false;          
            TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerArea.ui.#choiceList.border.fill.color").value = "255,0,0";
        }
        if (TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerActivity.rawValue == null)
        {
            TrainerTableValid = false;          
            TrainerForm.TrainerTable.TrainerData.all.item(i).TrainerActivity.ui.#textEdit.border.fill.color").value = "255,0,0";
        }
    }
}  

答案 2 :(得分:0)

这是我最终做的事情。首先,我将所有字段设为可选。然后我从按钮的单击事件中执行此代码。

    var fields = xfa.resolveNodes("TrainerForm.TrainerTable.TrainerData[*]");
for (var i=0;i<fields.length;i++)
{
    if (TrainerForm.TrainerTable.resolveNode("TrainerData[" + i + "]").TrainerName.rawValue == null && 
        TrainerForm.TrainerTable.resolveNode("TrainerData[" + i + "]").TrainerPrepHrs.rawValue == null && 
        TrainerForm.TrainerTable.resolveNode("TrainerData[" + i + "]").TrainerArea.selectedIndex == -1 && 
        TrainerForm.TrainerTable.resolveNode("TrainerData[" + i + "]").TrainerActivity.rawValue == null ) 
        ;//check the case where all rows are blank which is valid
    else
    {
        if (TrainerForm.TrainerTable.resolveNode("TrainerData[" + i + "]").TrainerName.rawValue == null)
        {
            TrainerTableValid = false;          
            xfa.resolveNode("TrainerForm.TrainerTable.TrainerData[" + i + "].TrainerName.ui.#textEdit.border.fill.color").value = "255,0,0";
        }
        if (TrainerForm.TrainerTable.resolveNode("TrainerData[" + i + "]").TrainerPrepHrs.rawValue == null)
        {
            TrainerTableValid = false;          
            xfa.resolveNode("TrainerForm.TrainerTable.TrainerData[" + i + "].TrainerPrepHrs.ui.#numericEdit.border.fill.color").value = "255,0,0";
        }
        if (TrainerForm.TrainerTable.resolveNode("TrainerData[" + i + "]").TrainerArea.selectedIndex == -1)
        {
            TrainerTableValid = false;          
            xfa.resolveNode("TrainerForm.TrainerTable.TrainerData[" + i + "].TrainerArea.ui.#choiceList.border.fill.color").value = "255,0,0";
        }
        if (TrainerForm.TrainerTable.resolveNode("TrainerData[" + i + "]").TrainerActivity.rawValue == null)
        {
            TrainerTableValid = false;          
            xfa.resolveNode("TrainerForm.TrainerTable.TrainerData[" + i + "].TrainerActivity.ui.#textEdit.border.fill.color").value = "255,0,0";
        }
    }
}