让 SqlDataSource 的 SelectCommand 属性值不会消失
Posted petewell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让 SqlDataSource 的 SelectCommand 属性值不会消失相关的知识,希望对你有一定的参考价值。
让 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 属性值不会消失的主要内容,如果未能解决你的问题,请参考以下文章
SqlDataSource.FilterExpression Property