Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DocuSign每个收件人的预列选项卡值_C#_Tabs_Docusignapi - Fatal编程技术网

C# DocuSign每个收件人的预列选项卡值

C# DocuSign每个收件人的预列选项卡值,c#,tabs,docusignapi,C#,Tabs,Docusignapi,当我有多个具有不同值的接收者时,使用SOAP API可以在信封中预先填充标记。例如:;我在模板中有两个收件人(或可能更多)和一个标记/选项卡(文本)。我希望此标签预先填充收件人的姓名,这样当他们获得该标签时,收件人1将在文档标签上看到其姓名,收件人2将看到其姓名 我尝试过获取模板选项卡,并根据现有的模板值(主要是定位和类型等)创建新的模板选项卡。我只是更改了值和收件人ID,并将这些选项卡添加到列表中。但是,每当我更改选项卡的值/收件人ID时,列表中的其他值都会更改。我通过将列表转换为一个数组并将

当我有多个具有不同值的接收者时,使用SOAP API可以在信封中预先填充标记。例如:;我在模板中有两个收件人(或可能更多)和一个标记/选项卡(文本)。我希望此标签预先填充收件人的姓名,这样当他们获得该标签时,收件人1将在文档标签上看到其姓名,收件人2将看到其姓名

我尝试过获取模板选项卡,并根据现有的模板值(主要是定位和类型等)创建新的模板选项卡。我只是更改了值和收件人ID,并将这些选项卡添加到列表中。但是,每当我更改选项卡的值/收件人ID时,列表中的其他值都会更改。我通过将列表转换为一个数组并将信封选项卡设置为新的选项卡数组来完成这个过程

过程如下:

    newEnvelope.Tabs = GetTabs(newEnvelope);

    private Tab[] GetTabs(Envelope envelope) {

     Tab[] exsitingTabs = envelope.Tabs;
     List<Tab> newTabs = new List<Tab>();

     foreach(Recipient r in envelope.Recipients) {
        Tab tab = exsitingTabs .ElementAt(14); // Just a custom text tag
        tab.RecipientID = r.ID;
        tab.Value = r.UserName;
        newTabs.Add(tab); //The older tab info gets replaced by the new tab info.
                          // all are still there, the old ones just have the same info
                          // as the latest added one
     }
     return newTabs.ToArray();
  }
newEnvelope.Tabs=GetTabs(newEnvelope);
私有选项卡[]获取选项卡(信封){
Tab[]exsitingTabs=信封。选项卡;
List newTabs=新列表();
foreach(信封中的收件人r.Recipients){
Tab Tab=exsitingTabs.ElementAt(14);//只是一个自定义文本标记
tab.RecipientID=r.ID;
tab.Value=r.UserName;
newTabs.Add(tab);//旧的选项卡信息将替换为新的选项卡信息。
//所有的都还在,老的都有相同的信息
//最新增加的
}
返回newTabs.ToArray();
}

是的,您完全可以通过DocuSign为多个收件人预先填充选项卡。尝试为收件人设置不同的
TabLabel
s,这可能会解决重复问题。我认为这可能是问题的原因,因为当tablabel相同时,字段将使用相同的值更新,但如果它们不同,则不会更新

从指南中:

因此,在for循环中,请尝试以下方法:

foreach(Recipient r in envelope.Recipients) {
    Tab tab = newTabs.ElementAt(14); // Just a custom text tag
    tab.RecipientID = r.ID;
    tab.Value = r.UserName;

    tab.TabLabel = r.ID; // or some other unique value for each recipient

    newTabs.Add(tab); //The older tab info gets replaced by the new tab info.
                      // all are still there, the old ones just have the same info
                      // as the latest added one


 }

我认为您可能遇到的问题是DocuSign选项卡是按收件人分配的,也就是说,它们被分配给信封中的特定收件人(或收件人角色)

例如,如果您正在发送贷款申请,并且有“签名者1”和“签名者2”,则需要有一个“签名者1Name”字段来捕获签名者1的姓名,以及一个“签名者2Name”字段来捕获签名者2的姓名(尽管在收件人签名时,全名字段由DocuSign自动填充)。您不会有一个单独的“名称”选项卡,然后尝试用两个不同的值填充它(这就是您的代码所做的)

您的代码可能与上面@Ergin所写的类似:

List<Tab> tabList = new List<Tab>();
Recipient[] recipients = newEnvelope.Recipients;

foreach (Recipient r in recipients)
{
    Tab tab = new Tab();
    tab.RecipientID = r.ID;
    tab.TabLabel = string.Format("Recipient{0}Name", r.ID);
    tab.Value = r.UserName;
    tab.DocumentID = "1";

    tabList.Add(tab);
}

newEnvelope.Tabs = tabList.ToArray();
List tabList=new List();
收件人[]收件人=新信封。收件人;
foreach(收件人中的收件人r)
{
Tab Tab=新选项卡();
tab.RecipientID=r.ID;
tab.TabLabel=string.Format(“收件人{0}名称”,r.ID);
tab.Value=r.UserName;
tab.DocumentID=“1”;
tabList.Add(选项卡);
}
newEnvelope.Tabs=tabList.ToArray();

要获取收件人#1的名称,您的标签标签应为“Recipient1Name”。

感谢您的快速回复。我已经尝试过了,它似乎仍然在用最新的价值观来设定旧的价值观。顺便说一下,我编辑了这篇旧文章,foreach循环中的新选项卡应该是beTab tab=existingTabs.ElementAt(14);
List<Tab> tabList = new List<Tab>();
Recipient[] recipients = newEnvelope.Recipients;

foreach (Recipient r in recipients)
{
    Tab tab = new Tab();
    tab.RecipientID = r.ID;
    tab.TabLabel = string.Format("Recipient{0}Name", r.ID);
    tab.Value = r.UserName;
    tab.DocumentID = "1";

    tabList.Add(tab);
}

newEnvelope.Tabs = tabList.ToArray();