在inforpath表单放入2个下拉列表控件,一个绑定的数据源 /dfs:myFields/dfs:dataFields/dfs:goyishaxx/@goyishmc 其中goyishmc是我在MOSS 2007上建的自定义列表;另一个绑定的数据源 /my:myFields/my:gysxx/my:source1 其中gysxx(组)、source1(组下面的重复域)是在inforpath设计时候自定义的数据源。我要实现的是这2个下拉列表框的级联。写的代码如下:
using Microsoft.Office.InfoPath;
using System;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;
using mshtml;
namespace gysxx
{
public partial class FormCode
{
//string goyishaa="";
// 启用浏览器功能的表单不支持成员变量。
// 请使用代码从 FormState 词典
// 写入和读取这些值,如下所示:
//
// private object _memberVariable
// {
// get
// {
// return FormState["_memberVariable"];
// }
// set
// {
// FormState["_memberVariable"] = value;
// }
// }
// 注意: 以下是 Microsoft Office InfoPath 所需的过程。
// 可以使用 Microsoft Office InfoPath 对其进行修改。
public void InternalStartup()
{
EventManager.XmlEvents["/my:myFields/my:gysxx/@my:gysmc"].Changed += new XmlChangedEventHandler(gysmc_attr_Changed);
}
public void gysmc_attr_Changed(object sender, XmlEventArgs e)
{
// 在此处编写代码,用于更改主数据源。
XPathNavigator parent = e.Site.SelectSingleNode("..");
// 清空Source1域的值
XPathNodeIterator items = parent.Select("my:source1", NamespaceManager);
while (items.Count != 0)
{
parent.SelectSingleNode("my:source1", NamespaceManager).DeleteSelf();
items = parent.Select("my:source1", NamespaceManager);
}
//记录供应商名称,以便3级列表使用
//this.goyishaa = e.NewValue.ToString().Trim();
string matchingcitysXPath = String.Format(
"/dfs:myFields/dfs:dataFields/dfs:goyishaxx[@goyishmc = '{0}']", e.NewValue);
// 获得符合条件的节点集合,逐一添加到Source1域中
foreach (XPathNavigator Navigator in this.DataSources["goyishaxx"].CreateNavigator().Select(
matchingcitysXPath, NamespaceManager))
{
using (XmlWriter writer = parent.AppendChild())
{
writer.WriteElementString("source1", NamespaceManager.LookupNamespace("my"),
Navigator.GetAttribute("kahuyiha", "").Trim());
}
MessageBox.Show(Navigator.GetAttribute("kahuyiha", ""));
}
}
要实现的第一个控件选择供应商名称后,第2个控件显示该供应商的相关开户银行。以上代码编译没有问题,但是在运行的时候,MessageBox.Show(Navigator.GetAttribute("kahuyiha", ""));
可以show出来信息,但是信息没有写入到source1里,也就没办法读取出来。第2个下拉列表是空的!
请大家帮助我看下代码是否存在异常。在这先谢谢各位大虾了。