65.9K
CodeProject 正在变化。 阅读更多。
Home

将 XML 数据从 Web 服务获取到 Infopath

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (2投票s)

2011年3月6日

CPOL

3分钟阅读

viewsIcon

37357

downloadIcon

372

这全部是关于通过 Web 服务将 XML 数据获取到 Infopath

在InfoPath中使用“筛选数据”功能

创建一个简单的Web服务XML数据源

  1. 启动Microsoft Visual Studio .NET。
  2. 在“文件”菜单上,单击“新建”,然后单击“项目”。
  3. 在“项目类型”列表中,选择“Visual Basic 项目”。
  4. 在“模板”列表中,选择“ASP.NET Web 服务”。
  5. 在“位置”框中,键入 http:///PopulateCities/Service1.asmx?wsdl,然后单击“下一步”。
  6. 在“解决方案资源管理器”中,右键单击“PopulateCities”,指向“添加”,然后单击“添加新项”。 出现“添加新项”对话框。
  7. 在“模板”部分中,单击“XML 文件”,在“名称”框中键入 Allcities.xml,然后单击“打开”。
  8. 用以下代码替换所有内容,然后单击“保存”。
    <?xml version="1.0" encoding="utf-8" ?>
    <States>
    	<State value="FL">
    		<ArrayOfString>
    			<string>Coral Gables</string>
    			<string>Miami</string>
    			<string>Orlando</string>
    			<string>Tallahassee</string>
    		</ArrayOfString>
    	</State>
    	<State value="MI">
    		<ArrayOfString>
    			<string>Detroit</string>
    			<string>Flint</string>
    			<string>Lansing</string>
    			<string>Livonia</string>
    		</ArrayOfString>
    	</State>
    	<State value="Unknown">
    		<ArrayOfString>
    			<string>Unknown State</string>
    		</ArrayOfString>
    	</State>
    </States>
  9. 右键单击 Service1.asmx,然后单击“查看代码”。
  10. 将以下代码示例添加到代码页的顶部。
    Imports System.Xml
    Imports System.IO
    Add the following Web service method to the Service1 class.
    // VB.net code
    <WebMethod()> _
    Public Function GetCities2() As System.Xml.XmlDocument
        Dim path As String
        path = Server.MapPath("AllCities.xml")
        Dim doc As New System.Xml.XmlDocument
        doc.Load(path)
        GetCities2 = doc
    End Function

C# 代码

[WebMethod()]
public System.Xml.XmlDocument GetCities2()
{
    string path = null;
    path = Server.MapPath("Allcities.xml");

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
    doc.Load(path);

    return doc;
}

在“生成”菜单上,单击“生成解决方案”。

创建 InfoPath 表单

  1. 启动 InfoPath。
  2. 在 InfoPath 2007 中的“文件”菜单上,单击“设计表单模板”。 在 InfoPath 2003 中的“文件”菜单上,单击“设计表单”。
  3. 将控件添加到新表单。 为此,请按照下列步骤操作
    1. 在 InfoPath 2007 中的“设计表单模板”任务窗格中,单击“空白”,然后单击“确定”。 在 InfoPath 2003 中的“设计表单”任务窗格中,单击“新建空白表单”。
    2. 在“设计任务”任务窗格中,单击“控件”。
    3. 在“插入控件”列表中,选择“下拉列表框”。 一个名为 field1 的新下拉列表被添加到表单中。
    4. 在 Microsoft InfoPath Designer 中,右键单击 field1,然后单击“下拉列表框属性”。
    5. 在“下拉列表属性”对话框中,单击“添加”。
    6. 在“添加选项”对话框的“值”框中,键入 FL,然后单击“确定”。
    7. 在“下拉列表属性”对话框中,单击“添加”。
    8. 在“添加选项”对话框的“值”框中,键入 MI,然后单击“确定”。
    9. 在“下拉列表框属性”对话框中,单击“确定”。
    10. 在“插入控件”列表中,选择“下拉列表框”。 一个名为 field2 的新下拉列表被添加到表单中。
  4. 在“工具”菜单上,单击“数据连接”。
  5. 在“数据连接”对话框中,单击“添加”。
  6. 在“数据连接向导”对话框中,单击“接收数据”,然后单击“下一步”。
  7. 单击“Web 服务”,然后单击“下一步”。
  8. 在“位置”框中,键入 http:///PopulateCities/Service1.asmx?wsdl,然后单击“下一步”。
  9. 在“选择操作”列表中,单击 GetCities2,然后单击“下一步”。
  10. 在“数据连接向导”对话框中,单击“完成”。
  11. 在“数据连接”对话框中,单击“关闭”。
  12. 在 InfoPath Designer 中,右键单击 field2,然后单击“下拉列表框属性”。
  13. 在 InfoPath 2007 中的“列表框条目”列表中,选择“在表单的数据源中查找值”。 在 InfoPath 2003 中的“列表框条目”列表中,选择“在数据连接中查找值到数据库、Web 服务、文件或 SharePoint 库或列表中”。
  14. 单击“选择 XPath”,位于“条目”框的右侧。 出现“选择字段或组”对话框。
  15. 添加筛选器到返回数据。 为此,请按照下列步骤操作
    1. 展开“所有注释”,单击“字符串”,然后单击“筛选数据”。 出现“筛选数据”对话框。
    2. 单击“添加”。 出现“指定筛选条件”框。
    3. 在第一个下拉列表中,单击“选择字段或组”。
    4. 在“数据源”部分,单击“GetCities (次要)”。
    5. 在 dataFields 节点中,单击“值”,然后单击“确定”。
    6. 单击“等于”作为第二个下拉列表。
    7. 在第三个下拉列表中,单击“选择字段或组”。
    8. 在“数据源”部分,单击“主”。
    9. 单击 field1,然后单击“确定”。
    10. 单击“确定”关闭所有打开的对话框。
    11. 单击“保存”以保存表单。

测试表单

  1. 在 InfoPath 2007 中的“文件”菜单上,指向“预览”,然后单击“表单”。 在 InfoPath 2003 中的“文件”菜单上,指向“预览表单”,然后单击“默认”。
  2. 单击 FL,单击 MI,然后从第一个下拉列表中单击“未知”。 请注意,第二个下拉列表按预期更新。
© . All rights reserved.