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
我想如果这个问题解决了,一切都会好的。
您是否尝试过使用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)));
}
}