本文描述在InfoPath中如何实现动态增/减dropdown list item. 废话不多说,入主题。
 
打开Visual Studio 2008,创建一个InfoPath Template 项目。
 
Design
在设计模式中创建一个Dropdown list,一个Button,一个TextBox:
 
 
创建一个新的repeating field:
 
将repeating field 绑定到一个Multi-Selection listbox上。
 
打开Dropdown list 的属性:
选择 "Look up values in the form's data source", 并在"Entries"里选择新建的repeating field: dpItemValue.
至此,Design工作完成。
 
Coding
在"Add" button 的属性中点"Edit Form Code...".
Visual Studio 会自动生成event handler.
向Dropdown list 中添加一个Item,实际上是增加一个dpItemValue节点。
XPathNavigator mainNav = this.MainDataSource.CreateNavigator();
                        XPathNavigator myFieldsElement = mainNav.SelectSingleNode("/my:myFields", NamespaceManager);

                        // Retrieve new dropdown list value.
                        String newItem = getNewDPValue();
                        if (!String.IsNullOrEmpty(newItem))
                        {
                                myFieldsElement.AppendChildElement("my", "dpItemValue", myFieldsElement.NamespaceURI, newItem);
                        }
 
大功告成。Source Code 在附件里。