infopath级联下拉列表显示查找字段值在1;#ABC格式.需要将值格式化为ABC,不带id

本文关键字:格式化 id 不带 ABC 格式 列表显示 级联 查找 字段 infopath #ABC | 更新日期: 2023-09-27 17:50:27

我有一个启用浏览器的infopath表单,带有一个下拉框(级联),数据是从xml文档中检索的。数据采用以下格式-(作为从查找字段检索的值)

item_number; # item_value

如何在下拉框中只显示item_value。我可以将规则应用于下拉框还是有任何方式通过代码来实现这一点?

谢谢你的帮助!

我在这里发现了一个类似的帖子级联下拉查找字段,但没有适当的解决方案

我找到了一个解决方案,但很难使它工作,我使用文件查询连接来获取下拉菜单的数据,我将执行连接并使用结果填充xml文档。我在编写xmldocument的内容时遇到了麻烦,请参阅我的问题-

Infopath FileQueryConnection.Execute(XpathNavigator)抛出system.net.webexcexception: attempt to read or write protected memory

我想如果这个问题解决了,一切都会好的。

infopath级联下拉列表显示查找字段值在1;#ABC格式.需要将值格式化为ABC,不带id

您是否尝试过使用XPath表达式并执行此操作

substing-after(YourFieldName, '#')

您可以尝试使用额外的计算列来显示清晰的数据。

终于找到解决办法了:

 private void formatValue(string dataSourceName, string xPathSTring)
    {
        FileQueryConnection con = (FileQueryConnection)DataConnections[dataSourceName];
        con.Execute();
        DataSource ds = this.DataSources[dataSourceName];
        XPathNavigator nav = ds.CreateNavigator();
        XPathNavigator root = MainDataSource.CreateNavigator();
        XPathNodeIterator iterator = nav.Select(xPathSTring, NamespaceManager);
        while (iterator.MoveNext())
        {
            string value = iterator.Current.Value;
            int startFrom = value.IndexOf('#') + 1;
            iterator.Current.SetValue(value.Substring(startFrom, (value.Length - startFrom)));
        }
    }