【发布时间】:2011-05-26 14:36:16
【问题描述】:
我正在尝试将参数添加到 ObjectDataSource 的删除事件中,如下面的 msdn 示例所示。我为 ObjectDataSource 的删除事件生成了一个事件处理程序,它具有与示例中相同的签名,但是,当我尝试清除示例中的 paramsFromPage 时,我收到一条错误消息,指出 paramsFromPage 是只读的。我需要在其他地方更改什么吗?
此示例来自以下 msdn 页面:
Private Sub NorthwindEmployeeDeleting(ByVal source As Object, ByVal e As ObjectDataSourceMethodEventArgs)
' The GridView passes the ID of the employee
' to be deleted. However, the business object, EmployeeLogic,
' requires a NorthwindEmployee parameter, named "ne". Create
' it now and add it to the parameters collection.
Dim paramsFromPage As IDictionary = e.InputParameters
If Not paramsFromPage("EmpID") Is Nothing Then
Dim ne As New NorthwindEmployee(paramsFromPage("EmpID").ToString())
' Remove the old EmpID parameter.
paramsFromPage.Clear()
paramsFromPage.Add("ne", ne)
End If
End Sub ' NorthwindEmployeeDeleting
编辑: 以下是我的代码
Protected Sub QueueDataSource_Deleting(ByVal sender As Object, ByVal e As ObjectDataSourceMethodEventArgs) Handles QueueDataSource.Deleting
Dim paramsFromPage As IDictionary = e.InputParameters
Dim queue As New QueueData
If Not paramsFromPage("QueueNamek__BackingField") Is Nothing Then
queue.QueueNamek__BackingField = paramsFromPage("QueueNamek__BackingField")
End If
If Not paramsFromPage("ServerNamek__BackingField") Is Nothing Then
queue.ServerNamek__BackingField = paramsFromPage("ServerNamek__BackingField")
End If
paramsFromPage.Add("queue", queue)
End Sub
错误“OrderedDictionary 是只读的,无法修改。”尝试添加到有序字典时抛出。
【问题讨论】:
-
您确定对 Clear 的调用导致了异常吗?确切的错误消息是什么?该属性是只读的,但这当然意味着您不能修改 e.InputParameters 指向的集合,但我现在明白了为什么您不能操纵集合本身的原因。 (对不起,我帮不上忙)
-
尝试修改 IDictionary ParamsFromPage 时会引发错误。
标签: .net vb.net data-binding objectdatasource