如何在 InfoPath 2003 中通过调用 Web 服务动态填充下拉列表
1个回答
2014-11-09 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517191
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
在 Office InfoPath 2003 中使用脚本来筛选数据
创建简单的 Web 服务
启动 Microsoft Visual Studio .NET。在“文件”菜单上,单击“新建”,然后单击“项目”。
从“项目类型”列表中,单击“Visual Basic 项目”。从“模板”列表中,单击“ASP.NET Web 服务”。
在“位置”框中,键入 http://<SERVER>/PopulateCities。
占位符 <SERVER> 是指您的 Web 服务器的名称。
单击“确定”。
右键单击“Service1.asmx.vb”,然后单击“查看代码”。
将下面的 Web 服务方法添加到 Service1 类。
<WebMethod()> _
Public Function GetCities(ByVal sState As String) As String()
If sState = "FL" Then
GetCities = New String() {"Coral Gables", "Miami", "Orlando", "Tallahassee"}
ElseIf sState = "MI" Then
GetCities = New String() {"Detroit", "Flint", "Lansing", "Livonia"}
Else
GetCities = New String() {"Unknown State"}
End If
End Function
在“生成”菜单上,单击“生成解决方案”。
创建 InfoPath 表单
启动 InfoPath。在“文件”菜单上,单击“设计表单”。
要向新表单中添加控件,请按照下列步骤操作:
在“设计表单”任务窗格中,单击“新建空白表单”。
在“设计任务”任务窗格中,单击“控件”。
在“插入控件”列表中,单击“下拉列表框”。
一个新的名为“field1”的下拉列表便添加到了表单中。
在 Microsoft InfoPath 设计器中,右键单击“field1”,然后单击“下拉列表框属性”。
在“下拉列表框属性”对话框中,单击“添加”。在“添加选项”对话框的“值”框中,键入 FL,然后单击“确定”。
在“下拉列表框属性”对话框中,单击“添加”。在“添加选项”对话框的“值”框中,键入 MI,然后单击“确定”。
在“下拉列表框属性”对话框中,单击“确定”。
在“插入控件”列表中,单击“下拉列表框”。
一个新的名为“field2”的下拉列表便添加到了表单中。
在“工具”菜单上,单击“辅助数据源”。在“辅助数据源”对话框中,单击“添加”。
单击“Web 服务”,然后单击“下一步”。
在“位置”框中,键入 http://<SERVER>/PopulateCities/Service1.asmx?wsdl。单击“下一步”。
在“选择操作”列表中,单击“GetCities”,然后单击“下一步”。
在“数据源设置向导”对话框中,单击“设置值”。在“设置值”对话框中,键入 FL,然后单击“确定”。
在“数据源设置向导”对话框中,单击“下一步”,然后单击“完成”。
在“辅助数据源”对话框中,单击“关闭”。
在编辑器窗口中,右键单击“field2”,然后单击“下拉列表框属性”。
在“列表框项”列表中,单击“在数据库、Web 服务或文件中查找”。
单击“选择 XPath”。
“选择 XPath”位于“项”框的右侧。
展开所有节点,然后单击“字符串”。单击“确定”。
在“下拉列表框属性”对话框中,单击“确定”。
添加脚本来在第一个下拉列表发生更改时查询 Web 服务
在设计器窗口中,右键单击“field1”,然后单击“下拉列表框属性”。
在“验证”列表中,单击“数据验证”。
在“事件”下拉列表中,单击“OnAfterChange”,然后单击“编辑”。
Microsoft 脚本编辑器将启动。
在代码注释后添加以下代码示例。
A field change has occurred...
VBScript
UpdateCities
XDocument.View.ForceUpdate
JScript
UpdateCities();
XDocument.View.ForceUpdate();
将 UpdateCities 过程添加到脚本文件中。
VBScript
Sub UpdateCities
Dim fieldValue
set fieldValue = XDocument.DOM.selectSingleNode( "/my:myFields/my:field1" )
'Get a reference to the SDS bound to the Web Service.
Dim theDataObject
set theDataObject = XDocument.DataObjects.Item("GetCities")
'Set the SelectionNamespaces so that you can find the correct field.
'Note: If the Web service was created with Visual Studio .NET 2003, the xmlns:s0 namespace is
'http://tempuri.org/PopulateCities/Service1
theDataObject.DOM.setProperty"SelectionNamespaces", _
"xmlns:dfs=""http://schemas.microsoft.com/office/infopath/2003/dataFormSolution"" " &_
"xmlns:s0=""http://tempuri.org/"""
Dim queryValue
set queryValue = theDataObject.DOM.selectSingleNode( _
"/dfs:myFields/dfs:queryFields/s0:GetCities/s0:sState" )
queryValue.text = fieldValue.text
theDataObject.Query
End Sub
JScript
function UpdateCities()
{
var fieldValue = XDocument.DOM.selectSingleNode( "/my:myFields/my:field1");
//Get a reference to the SDS bound to the Web Service.
var theDataObject = XDocument.DataObjects.Item("GetCities");
//Set the SelectionNamespaces so that you can find the correct field.
// Note: If the Web service was created with Visual Studio .NET 2003, the xmlns:s0 namespace is
// http://tempuri.org/PopulateCities/Service1
theDataObject.DOM.setProperty("SelectionNamespaces",
'xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" ' +
'xmlns:s0="http://tempuri.org/"');
var queryValue = theDataObject.DOM.selectSingleNode(
"/dfs:myFields/dfs:queryFields/s0:GetCities/s0:sState" );
queryValue.text = fieldValue.text;
theDataObject.Query();
}
切换回 InfoPath。在“数据验证”对话框中,单击“确定”。在“下拉列表框属性”对话框中,单击“确定”。
在“工具”菜单上,单击“脚本”,然后单击“OnLoad 事件”。
此时会脚本编辑器,并会添加 XDocument_OnLoad 事件处理程序。
将以下代码示例添加到 XDocument_OnLoad 的实现中。
VBScript
UpdateCities
JScript
UpdateCities();
在“文件”菜单上,单击“保存”,然后退出脚本编辑器。
测试您的表单
在“文件”菜单上,指向“预览表单”,然后单击“默认”。
当表单出现时,“选择”将显示在第一个下拉列表中。
此时显示第二个下拉列表中的列表。
请注意,正如您所预期的,会出现“未知状态”。
在第一个下拉列表中单击“FL”,然后单击“MI”。
请注意,正如您所预期的,会更新第二个下拉列表。
创建简单的 Web 服务
启动 Microsoft Visual Studio .NET。在“文件”菜单上,单击“新建”,然后单击“项目”。
从“项目类型”列表中,单击“Visual Basic 项目”。从“模板”列表中,单击“ASP.NET Web 服务”。
在“位置”框中,键入 http://<SERVER>/PopulateCities。
占位符 <SERVER> 是指您的 Web 服务器的名称。
单击“确定”。
右键单击“Service1.asmx.vb”,然后单击“查看代码”。
将下面的 Web 服务方法添加到 Service1 类。
<WebMethod()> _
Public Function GetCities(ByVal sState As String) As String()
If sState = "FL" Then
GetCities = New String() {"Coral Gables", "Miami", "Orlando", "Tallahassee"}
ElseIf sState = "MI" Then
GetCities = New String() {"Detroit", "Flint", "Lansing", "Livonia"}
Else
GetCities = New String() {"Unknown State"}
End If
End Function
在“生成”菜单上,单击“生成解决方案”。
创建 InfoPath 表单
启动 InfoPath。在“文件”菜单上,单击“设计表单”。
要向新表单中添加控件,请按照下列步骤操作:
在“设计表单”任务窗格中,单击“新建空白表单”。
在“设计任务”任务窗格中,单击“控件”。
在“插入控件”列表中,单击“下拉列表框”。
一个新的名为“field1”的下拉列表便添加到了表单中。
在 Microsoft InfoPath 设计器中,右键单击“field1”,然后单击“下拉列表框属性”。
在“下拉列表框属性”对话框中,单击“添加”。在“添加选项”对话框的“值”框中,键入 FL,然后单击“确定”。
在“下拉列表框属性”对话框中,单击“添加”。在“添加选项”对话框的“值”框中,键入 MI,然后单击“确定”。
在“下拉列表框属性”对话框中,单击“确定”。
在“插入控件”列表中,单击“下拉列表框”。
一个新的名为“field2”的下拉列表便添加到了表单中。
在“工具”菜单上,单击“辅助数据源”。在“辅助数据源”对话框中,单击“添加”。
单击“Web 服务”,然后单击“下一步”。
在“位置”框中,键入 http://<SERVER>/PopulateCities/Service1.asmx?wsdl。单击“下一步”。
在“选择操作”列表中,单击“GetCities”,然后单击“下一步”。
在“数据源设置向导”对话框中,单击“设置值”。在“设置值”对话框中,键入 FL,然后单击“确定”。
在“数据源设置向导”对话框中,单击“下一步”,然后单击“完成”。
在“辅助数据源”对话框中,单击“关闭”。
在编辑器窗口中,右键单击“field2”,然后单击“下拉列表框属性”。
在“列表框项”列表中,单击“在数据库、Web 服务或文件中查找”。
单击“选择 XPath”。
“选择 XPath”位于“项”框的右侧。
展开所有节点,然后单击“字符串”。单击“确定”。
在“下拉列表框属性”对话框中,单击“确定”。
添加脚本来在第一个下拉列表发生更改时查询 Web 服务
在设计器窗口中,右键单击“field1”,然后单击“下拉列表框属性”。
在“验证”列表中,单击“数据验证”。
在“事件”下拉列表中,单击“OnAfterChange”,然后单击“编辑”。
Microsoft 脚本编辑器将启动。
在代码注释后添加以下代码示例。
A field change has occurred...
VBScript
UpdateCities
XDocument.View.ForceUpdate
JScript
UpdateCities();
XDocument.View.ForceUpdate();
将 UpdateCities 过程添加到脚本文件中。
VBScript
Sub UpdateCities
Dim fieldValue
set fieldValue = XDocument.DOM.selectSingleNode( "/my:myFields/my:field1" )
'Get a reference to the SDS bound to the Web Service.
Dim theDataObject
set theDataObject = XDocument.DataObjects.Item("GetCities")
'Set the SelectionNamespaces so that you can find the correct field.
'Note: If the Web service was created with Visual Studio .NET 2003, the xmlns:s0 namespace is
'http://tempuri.org/PopulateCities/Service1
theDataObject.DOM.setProperty"SelectionNamespaces", _
"xmlns:dfs=""http://schemas.microsoft.com/office/infopath/2003/dataFormSolution"" " &_
"xmlns:s0=""http://tempuri.org/"""
Dim queryValue
set queryValue = theDataObject.DOM.selectSingleNode( _
"/dfs:myFields/dfs:queryFields/s0:GetCities/s0:sState" )
queryValue.text = fieldValue.text
theDataObject.Query
End Sub
JScript
function UpdateCities()
{
var fieldValue = XDocument.DOM.selectSingleNode( "/my:myFields/my:field1");
//Get a reference to the SDS bound to the Web Service.
var theDataObject = XDocument.DataObjects.Item("GetCities");
//Set the SelectionNamespaces so that you can find the correct field.
// Note: If the Web service was created with Visual Studio .NET 2003, the xmlns:s0 namespace is
// http://tempuri.org/PopulateCities/Service1
theDataObject.DOM.setProperty("SelectionNamespaces",
'xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" ' +
'xmlns:s0="http://tempuri.org/"');
var queryValue = theDataObject.DOM.selectSingleNode(
"/dfs:myFields/dfs:queryFields/s0:GetCities/s0:sState" );
queryValue.text = fieldValue.text;
theDataObject.Query();
}
切换回 InfoPath。在“数据验证”对话框中,单击“确定”。在“下拉列表框属性”对话框中,单击“确定”。
在“工具”菜单上,单击“脚本”,然后单击“OnLoad 事件”。
此时会脚本编辑器,并会添加 XDocument_OnLoad 事件处理程序。
将以下代码示例添加到 XDocument_OnLoad 的实现中。
VBScript
UpdateCities
JScript
UpdateCities();
在“文件”菜单上,单击“保存”,然后退出脚本编辑器。
测试您的表单
在“文件”菜单上,指向“预览表单”,然后单击“默认”。
当表单出现时,“选择”将显示在第一个下拉列表中。
此时显示第二个下拉列表中的列表。
请注意,正如您所预期的,会出现“未知状态”。
在第一个下拉列表中单击“FL”,然后单击“MI”。
请注意,正如您所预期的,会更新第二个下拉列表。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询