循环通过infopath 2010重复部分,并使用C#以相反的顺序显示数据

本文关键字:数据 显示 顺序 infopath 2010重 复部 循环 | 更新日期: 2023-09-27 18:28:22

我在InfoPath 2010中创建了一个带有c#代码的表单。此表单的目的是作为我们在此处理的问题的运行日志。C#被用来生成一封格式非常特殊的电子邮件。此电子邮件的正文需要以相反的顺序显示重复字段中的项目(最新的在顶部)。我的第一个问题是试图找到一种方法,将重复部分的数据填充到电子邮件正文中。我终于能够找到这个foreach循环,它成功地按标准顺序打印了数据。

foreach (XPathNavigator node in runningLogTable)
{
    logEntry = node.SelectSingleNode("@my:entry", this.NamespaceManager).Value;
    logTime = node.SelectSingleNode("my:CurrentTime", this.NamespaceManager).Value;
    sb.Append(convertTime(logTime) + "'n");
    sb.Append(logEntry + "'n'n");
}

来源:Infopath重复表-从当前行获取字段

顺便说一句,这个循环在stringBuilder函数内部。我的问题是,如何按相反的顺序进行操作
我已经在谷歌上搜索了好几天了,我不知道我是否只是不知道正确的术语或什么,但不用说,我一直无法找到有效的解决方案。我知道必须有一个我看不到的简单解决方案。

循环通过infopath 2010重复部分,并使用C#以相反的顺序显示数据

不确定这个问题为什么会从网格中消失,但有几个人帮助我(特别是Save),他们把我带上了另一条路。我能够让我的代码工作使用以下:

            //Lets get those log entries!
        List<string> logEntries = new List<string>(); // Create a list array to hold each entry
        List<string> logTimes = new List<string>(); // Create a list array to hold each log time
        foreach (XPathNavigator entry in runningLogTable) // iterate through the repeating section of the log
        {
            logEntry = entry.SelectSingleNode("@my:entry", this.NamespaceManager).Value; // Get the string value from each field
            logTime = entry.SelectSingleNode("my:CurrentTime", this.NamespaceManager).Value; // Get the string value for the time from each field.
            logEntries.Add(logEntry); // Add each log entry to the list starting at position (index) 0
            logTimes.Add(convertTime(logTime)); // Add each time entry to the list starting at position (index) 0
            // Each log entry should align with the correct time entry since both start at index 0.
        }
        for (int i = (logEntries.Count - 1); i >= 0; i--) // get the count of the log entries list and loop through each indexed position in reverse.
        {
            sb.Append(logTimes[i].ToString() + "'n"); // append each indexed entry to the log starting from the last position and moving to the first (0)
            sb.Append(logEntries[i].ToString() + "'n'n"); // append each indexed time to the log starting from the last position and moving to the first (0)
        }

感谢所有提供帮助的人。我希望我能链接到用户名,因为Save确实救了我!

谢谢大家!!