infopath表单中将值显示在多选列表框中以及获取多选列表框中选中的值

最近做一个项目,遇到一个棘手的问题:如何将值显示在多选列表框中以及获取多选列表框中选中的值。尝试好几种方法,最后还是以失败告终。后来我尝试分两步走,第一步:添加一个多选列表框控件,将数据源绑定到多选列表框控件中;第二步:添加一个文本框控件,负责存储初始值以及接收多选列表框中选定的值,以“;”分隔。具体代码如下:

(1):将多选列表框中选中的值清空。

//nodeName:多选列表框中显示节点的XPath路径
private
void deleteAllItems(string nodeName)
{
XPathNodeIterator factoryIterator = this.CreateNavigator().Select(nodeName, this.NamespaceManager);
while (factoryIterator.MoveNext())
{
if (factoryIterator.Current != null)
{
factoryIterator.Current.DeleteSelf();
}
}
if (factoryIterator.Count > 0)
{
deleteAllItems(nodeName);
}
}

(2):将初始值显示到多选列表框中。

//repeatName:所选列表框的XPath路径
//nodeName:多选列表框中显示节点名称
//saveNodeName:存储初始值的文本框控件的XPath路径
private
void writeIntoTable(string repeatName,string nodeName,string saveNodeName)
{
//删除选中的选项
deleteAllItems(repeatName + "/my:" + nodeName);
string[] factoryList = this.CreateNavigator().SelectSingleNode(saveNodeName, this.NamespaceManager).Value.Split(';');
foreach (string factoryName in factoryList)
{
XmlDocument document = new XmlDocument();
XmlNode factoryNode = document.CreateElement(nodeName, this.NamespaceManager.LookupNamespace("my"));
XmlNode childNode = document.AppendChild(factoryNode);
childNode.InnerText = factoryName;
this.MainDataSource.CreateNavigator().SelectSingleNode(repeatName, this.NamespaceManager).AppendChild(document.DocumentElement.CreateNavigator());
}
}

(3):用户在多选列表框中选择了条目后,将多选列表框选中的值写入到文本框控件中。

//nodeName:多选列表框中显示节点的XPath路径
//saveNodeName:存储初始值的文本框控件的XPath路径。
private
void setApplierFactory(string nodeName,string saveNodeName)
{
string factoryName = "";
XPathNodeIterator factoryIterator = this.CreateNavigator().Select(nodeName, this.NamespaceManager);
while (factoryIterator.MoveNext())
{
if (!string.IsNullOrEmpty(factoryIterator.Current.InnerXml))
{
factoryName += factoryIterator.Current.InnerXml + ";";
}
}
XPathNavigator factory = this.CreateNavigator().SelectSingleNode(saveNodeName, this.NamespaceManager);
factory.SetValue(factoryName);
}

如此,虽然操作麻烦些,但至少可以解决实际问题。呵呵……如果大家还有更好的方法,不妨分享分享。



转载于:https://www.cnblogs.com/flow-water/archive/2011/12/02/sharepoint-infopath-001.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值