LoadingEventArgs.InputParameters 属性
获取一个 IDictionary,它包含使用 /InputParameters 命令行选项、URL 中的查询参数或 NewFromFormTemplateWithInputParameters 方法之一指定的所有输入参数。
命名空间: Microsoft.Office.InfoPath
程序集: Microsoft.Office.InfoPath(位于 Microsoft.Office.InfoPath.dll 中)
语法
声明
Public MustOverride ReadOnly Property InputParameters As IDictionary(Of String, String)
Get
用法
Dim instance As LoadingEventArgs
Dim value As IDictionary(Of String, String)
value = instance.InputParameters
public abstract IDictionary<string, string> InputParameters { get; }
属性值
类型:System.Collections.Generic.IDictionary<String, String>
包含输入参数的 IDictionary。
异常
异常 | 条件 |
---|---|
InvalidOperationException | 调用了一种方法,该方法尝试向包含输入参数的 IDictionary 写入数据。 |
备注
输入参数包含一个或多个以与号 (&) 字符分隔的名称/值对,它们是在通过命令行或批处理文件打开表单模板时使用 /InputParameters 命令行选项指定的。还可以在通过 URL 打开表单模板时使用查询参数来指定输入参数。
备注
尽管 IDictionary 通常是可读/写的,但 InfoPath 禁止调用向 IDictionary 写入数据的任何方法(例如 Add 或 Clear 方法)。向 InputParameters 属性返回的 IDictionary 写入数据的任何调用尝试都将引发 InvalidOperationException。
此成员只能由与当前打开的表单在相同域中运行的表单访问,或者由已授予跨域权限的表单访问。
可以通过 Microsoft InfoPath Filler 或 Web 浏览器内打开的表单中运行的代码访问此类型或成员。
示例
在下面的代码示例中,包含 Loading 事件处理程序代码的 InfoPath 表单模板是使用以下语法从命令行或 URL 打开的。
命令行:
infopath.exe "C:\User Forms\DeptReport.xsn" /InputParameters "Dept=Accounting&Acct=Contoso"
URL:
https://server/sites/team/forms/DeptReport.xsn?Dept=Accounting&Acct=Contoso
或者,也可以使用 XmlFormCollection 类的 NewFromFormTemplateWithInputParameters(String, String) 方法、ExternalApplication 接口的 NewFromSolutionWithInputParameters(String, String) 方法或 XDocumentsCollection 的 NewFromSolutionWithInputParameters(Object, Object) 方法,打开新的表单并从代码中传入输入参数。
备注
最后两种方法被设计为通过外部自动化代码来使用这些方法,而不能通过表单代码进行调用。
从 Loading 事件处理程序中使用 InputParameters 属性,在打开表单时将 Department 域值设置为"Accounting",并将 Account 域值设置为"Contoso"。可以使用 /InputParameters 命令行选项、URL 输入参数或 NewFromFormTemplateWithInputParameters(String, String) 方法,将指定这些值的名称/值对作为输入参数传递。
public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
// Be sure that the InputParameter dictionary contains
// values before proceeding.
if (e.InputParameters.Count != 0)
{
string vDept = e.InputParameters["Dept"];
string vAcct = e.InputParameters["Acct"];
XPathNavigator myNav = CreateNavigator();
myNav.SelectSingleNode("/my:myFields/my:Department",
NamespaceManager).SetValue(vDept);
myNav.SelectSingleNode("/my:myFields/my:Account",
NamespaceManager).SetValue(vAcct);
}
}
Public Sub FormEvents_Loading(ByVal sender As Object, _
ByVal e As LoadingEventArgs)
' Be sure that the InputParameter dictionary contains
' values before proceeding.
If e.InputParameters.Count <> 0 Then
Dim vDept As String = e.InputParameters("Dept")
Dim vAcct As String = e.InputParameters("Acct")
Dim myNav As XPathNavigator = CreateNavigator()
myNav.SelectSingleNode("/my:myFields/my:Department", _
NamespaceManager).SetValue(vDept)
myNav.SelectSingleNode("/my:myFields/my:Account", _
NamespaceManager).SetValue(vAcct)
End If
End Sub