从业务逻辑层方法更新ListView

时间:2011-09-07 05:18:33

标签: asp.net vb.net listview

我有一个由自定义对象支持的购物车ListView控件,该对象具有选择和删除方法。在ListView中,其中一列是ImageButton,基本上是一个删除图标,CommandName参数设置为CommandName="Delete"

我的问题与在删除时更新购物车ListView有关;由于删除方法存储在自定义业务实体对象中,我在更新购物车内的计算方面遇到了麻烦(我们删除了一个项目,因此我需要重新计算运费,税金等)。

现在,我已经让ListView控件在Not Page.IsPostBack的页面加载中调用它的计算方法,但显然这不是由delete方法触发的。

当我的自定义业务逻辑中的控件范围之外发生删除时,有关删除时调用计算方法的位置的任何建议吗?

1 个答案:

答案 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事件。