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