2014-01-29 52 views
0

我正在开发一个LiveCycle表单,该表单上有一个可以有可变数量行的表格。我只想验证它是否有一列中的数据,但不是全部列中的数据。所以我会跳过验证,如果行是空白或该行中的所有列都填写。以LiveCycle形式验证表格行

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

由于提前, 保罗

+0

我想通了如何环路直通的表行。我只需要知道如何手动将行标记为无效。 – Paul

回答

1

我会通过更换resolveNodes那是相当缓慢的tweat你的答案一点点。

  • 为了得到行数可以使用instanceManager TrainerForm._TrainerTable.count

  • 于从行列表使用<RowName>.all.item(index)得到一个特定的项目。使用这个构造时要小心,因为它至少需要一行。 是Row[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"; 
     } 
    } 
} 
+0

这似乎是一个很好的代码调整,但你将如何处理#textEdit.border.fill.color。我以为你需要为所有的字符,如#使用resloveNode。 – Paul

1

你可以把你的脚本在你的细胞或整排的验证事件。验证脚本的结果由最后一行结果确定(truefalse);要使验证失败可见,您可以设置表单级别验证(文件 - >表单属性 - >表单验证 - >颜色失败字段)。

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

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"; 
     } 
    } 
}