码迷,mamicode.com
首页 > 数据库 > 详细

让 SqlDataSource 的 SelectCommand 属性值不会消失

时间:2019-09-09 09:14:34      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:cti   val   保存   return   comm   param   view   sum   net   

让 SqlDataSource 的 SelectCommand 属性值不会消失


承上一篇“SqlDataSource 执行数据筛选”中,可以知道 SqlDataSource 的 SelectCommand 属性值不会被保留在 ViewState 中,所以我们在 Page 中覆写 LoadViewState 及 SaveViewState 方法来维护 SqlDataSource 的 SelectCommand 属性值。

不过这样每次动态设定 SelectCommand 属性值都要这样处理,感觉上会比较麻烦点;是否能让 SqlDataSource 控件的 SelectCommand 属性值可以由控件本身自行维护状态呢?当然可以,而且非常简单,只要把上篇中覆写 LoadViewState 及 SaveViewState 方法的作法直接搬到自订 SqlDataSource 控件即可。

继承 SqlDataSource 命名为 TBSqlDataSource,覆写 LoadViewState 及 SaveViewState 方法来维护 SelectCommand 属性,这样就可以更方便使用 SelectCommand 属性,而无需由每个页面去自行处理。

Namespace WebControls
    Public Class TBSqlDataSource
        Inherits SqlDataSource

#Region " ViewState 状态管理 "

        ‘‘‘ 
        ‘‘‘ 由 ViewState 还原控件的状态。
        ‘‘‘ 
        ‘‘‘ 要还原的控件状态。
        Protected Overrides Sub LoadViewState(ByVal savedState As Object)
            If Not (savedState Is Nothing) Then
                ‘ Load State from the array of objects that was saved at ;
                ‘ SavedViewState.
                Dim myState As Object() = CType(savedState, Object())

                If Not (myState(0) Is Nothing) Then
                    MyBase.LoadViewState(myState(0))
                End If

                If Not (myState(1) Is Nothing) Then
                    Me.SelectCommand = CType(myState(1), String)
                End If
            End If
        End Sub

        ‘‘‘ 
        ‘‘‘ 控件的状态保存至 ViewState。
        ‘‘‘ 
        ‘‘‘ 含有控件之目前检视状态的对象。
        Protected Overrides Function SaveViewState() As Object
            Dim baseState As Object = MyBase.SaveViewState()
            Dim myState(1) As Object
            myState(0) = baseState
            myState(1) = Me.SelectCommand
            Return myState
        End Function

#End Region

    End Class
End Namespace

ASP.NET 魔法学院

原文:大专栏  让 SqlDataSource 的 SelectCommand 属性值不会消失


让 SqlDataSource 的 SelectCommand 属性值不会消失

标签:cti   val   保存   return   comm   param   view   sum   net   

原文地址:https://www.cnblogs.com/petewell/p/11489714.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!