我有一个由自定义对象支持的购物车ListView
控件,该对象具有选择和删除方法。在ListView
中,其中一列是ImageButton
,基本上是一个删除图标,CommandName
参数设置为CommandName="Delete"
。
我的问题与在删除时更新购物车ListView
有关;由于删除方法存储在自定义业务实体对象中,我在更新购物车内的计算方面遇到了麻烦(我们删除了一个项目,因此我需要重新计算运费,税金等)。
现在,我已经让ListView
控件在Not Page.IsPostBack
的页面加载中调用它的计算方法,但显然这不是由delete方法触发的。
当我的自定义业务逻辑中的控件范围之外发生删除时,有关删除时调用计算方法的位置的任何建议吗?
答案 0 :(得分:2)
考虑将重新计算方法绑定到ListView
的{{3}}。例如:
Sub ShoppingCartListView_ItemDeleted(sender As Object, e As ListViewDeletedEventArgs) Handles ShoppingCartListView.ItemDeleted
' Determine whether an exception occurred
If e.Exception Is Nothing Then
' Ensure that a record was deleted.
If e.AffectedRows > 0 Then
' Call recalculation method
CalculateCharges()
End If
Else
' Handle e.Exception
HandleMyException(e.Exception)
End If
End Sub
老实说,AffectedRows
的错误检查可能与您的用例有点无关,但在ListViewDeletedEventArgs
中了解您可以使用哪些信息绝不会受到伤害。
修改强>
如果需要为业务逻辑添加支持以获取有关受事务影响的行数的信息,请首先确保ObjectDataSource.DeleteMethod
属性调用的方法的返回值是整数或者是将返回一个的属性或函数。接下来,为您的ItemDeleted Event事件添加处理程序。在这里,您可以将事件参数中包含的方法的返回值分配给另一个名为AffectedRows
的事件参数成员。例如:
Sub BusinessObjectDataSource_Deleted(sender as Object, e As ObjectDataSourceStatusEventArgs) Handles BusinessObjectDataSource.Deleted
e.AffectedRows = CInt(e.ReturnValue)
End Sub
由于e.ReturnValue
作为Object
传递,您可以根据需要投放它,并访问具有更新e.AffectedRows
所需信息的任何特定媒体资源。
提供给这些参数的值将传递给您的ListView.ItemDeleted
事件。