InfoPath Forms Services中实现联动下拉列表框

    最近参与的InfoPath Forms Services的项目,需要实现下拉列表的联动。我在网上搜索了不少资料,其中有一种解决的方案:http://blogold.chinaunix.net/u/18783/showart_2199801.html

    但这种解决方案没有考虑到显示值和值的区分。

    现在考虑用其他的方式。

数据源设置:

2011062314072476.png

节点设置:

2011062314090042.png

二级节点关联设置:

2011062314100895.png

关键部分代码,针对省份_Changed事件的处理: 

 
  
public void 省份_Changed( object sender, XmlEventArgs e)
{
if ( ! e.NewValue.Equals( string .Empty))
{
// 备选项,也可以根据业务连接数据库或者读取XML文件
string [] HubeiCityKeyList = { " 武汉 " , " 襄樊 " };
string [] HubeiCityValueList = { " Wuhan " , " Xiangfan " };
string [] HunanCityKeyList = { " 长沙 " , " 邵阳 " };
string [] HunanCityValueList = { " Changsha " , " Shaoyang " };

CreateNavigator().SelectSingleNode(
" /my:myFields/my:市 " , NamespaceManager).SetValue( string .Empty);
switch (e.NewValue)
{
case " 湖北省 " :
{
InsertNode(HubeiCityKeyList, HubeiCityValueList);
break ;
}
case " 湖南省 " :
{
InsertNode(HunanCityKeyList, HunanCityValueList);
break ;
}
}
}
else
{
ClearCityNode();
}
}

private void InsertNode( string [] keyArray, string [] valueArray)
{
ClearCityNode();
// 添加备选节点
int j = 0 ;
XPathNavigator oXPathNavigator
= null ;
for ( int i = 0 ; i < keyArray.Length; i ++ )
{
oXPathNavigator
= CreateNavigator().SelectSingleNode( " /my:myFields/my:市备选[last()] " , NamespaceManager);
oXPathNavigator.SelectSingleNode(
" my:市备选key " , NamespaceManager).SetValue(keyArray[i]);
oXPathNavigator.SelectSingleNode(
" my:市备选value " , NamespaceManager).SetValue(valueArray[i]);
oXPathNavigator.InsertAfter(oXPathNavigator.OuterXml);
j
++ ;
}
if (j > 0 ) oXPathNavigator.DeleteSelf();
}

private void ClearCityNode()
{
// 清空备选节点
for ( int i = 0 ; i < CreateNavigator().Select( " /my:myFields/my:市备选 " , NamespaceManager).Count - 1 ; i ++ )
{
CreateNavigator().SelectSingleNode(
" /my:myFields/my:市备选[last()] " , NamespaceManager).DeleteSelf();
}
CreateNavigator().SelectSingleNode(
" /my:myFields/my:市备选/my:市备选key " , NamespaceManager).SetValue( string .Empty);
CreateNavigator().SelectSingleNode(
" /my:myFields/my:市备选/my:市备选value " , NamespaceManager).SetValue( string .Empty);

}
效果图:
2011062314272243.png

2011062314274940.png

2011062314275813.png

转载于:https://www.cnblogs.com/yangjingzone/archive/2011/06/23/2088083.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值