【问题标题】:InfoPath autonumber fieldInfoPath 自动编号字段
【发布时间】:2012-09-17 22:54:50
【问题描述】:

我正在设计一个信息路径(变更请求)表单:

1)我如何添加一个文本框,在创建新表单时自动递增到下一个数字(将新的变更请求表单添加到表单库)。

2)我如何从现有表单中检索信息到新表单。

注意:该字段不在重复表内。我需要在每个新的变更请求表单上生成下一个变更请求编号。

TIA!

【问题讨论】:

    标签: infopath autonumber


    【解决方案1】:

    没有内置方法可以做到这一点,但有几种方法可以实现您想要的(数据库查询或 SPList 查询)。但是这种请求在某种程度上听起来像是解决另一个问题的解决方法。 数量增加的常见情况是:

    • 唯一 ID
    • 计算请求数
    • 使外部列表可引用(与 ID 相同)
    • 使 ID 可猜测(时间戳不可)

    如果您需要 ID:在大多数情况下,您不必使用整数 ID。只需将表单标题用作自然 ID。 (例如客户 + 时间戳)

    如果您需要可猜测的 ID,则需要它们是因为外部系统想要访问或引用请求。在这种情况下,请尝试将拉动方向更改为推送方向(例如,通过使用工作流)或让您的其他系统提供一个“getID”函数,您的表单可以调用该函数以获得已知 ID(无需猜测)。

    无论如何 - 对我来说,您似乎想要实现这一目标以解决其他问题。也许这个问题也有不同的解决方案?

    【讨论】:

      【解决方案2】:

      您可以在要自动编号的表单上的文本标题中输入一个标记,例如#num#,然后使用 javascript 或 jquery 查找这些标记并将它们替换为递增的数字。

      这样做的缺点是,如果您将列表导出到 Excel,则标记不会被转换为数字。但它是屏幕渲染的一个很好的解决方案。

      使用 Firebug 找出包含您的自动编号标签的容器的类别。 也许你可以像这样做一些事情

      function TokenReplacement(){
          var ClassName = 'ms-formlabel';
          var elements = new Array();
          var elements = document.getElementsByTagName('td'); 
          var numerator=0;
          //Now do find and replace on everything else
          for(var e=0;e<elements.length;e++){
              thiselement = elements[e];
              if(thiselement.className == ClassName){
                  //autonumber the questions by replacing the #num# token
                  if(thiselement.innerHTML.search('#num#') > -1){
                      numerator++
                      var replacenum = "<b>" + numerator + ".&nbsp;&nbsp;</b>";
                      thiselement.innerHTML = elements[e].innerHTML.replace('#num#',replacenum);  
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-07
        • 1970-01-01
        • 2012-01-26
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 1970-01-01
        相关资源
        最近更新 更多