2

I am designing an infopath (Change Request) form:

1)How can i add a text box that automaticaly increments to the next number when a new form is created (adding a new Change Request form to the form library).

2)How do i retrieve information from an existing form to the new form.

NOTE: The field is not inside a repeating table. I need to generate the next Change Request number on each new Change Request form.

TIA!

4

2 回答 2

2

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

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

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

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

无论如何 - 对我来说,看起来你想实现这个来解决其他一些问题。也许这个问题也有不同的解决方案?

于 2009-04-20T06:56:52.913 回答
0

您可以在要自动编号的表单上的文本标题中输入一个标记,例如#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);  
            }
        }
    }
}
于 2012-09-17T14:54:50.843 回答