我有一个自定义用户控件,它继承了asp:Repeater并在第一次运行时'初始化' - 它找到子控件(在转发器项模板中)并根据作为属性提供的tablename属性创建一个SQL表控制。要知道不要再次初始化它,我只需检查表格(这有问题)。
我的问题是,在初始化,几天甚至几周之后,tablename属性不应该更改。
如何在初始化后才将readonly属性和值绑定到特定控件?
听起来很棘手,也许不可能。开箱即用的解决方案?
编辑: Thx Dennis - 我不是在谈论运行期间的修改
答案 0 :(得分:3)
仅在以前未设置_tablename时设置_tablename:
Private _tablename As String
Public Property TableName() As String
Get
Return _tablename
End Get
Private Set(ByVal value As String)
If String.IsNullOrEmpty(_tablename) Then
_tablename = value
End If
End Set
End Property
C#
private string _tablename;
public string Tablename {
get { return _tablename; }
private set {
if String.IsNullOrEmpty(_tablename)
_tablename = value;
}
}
要使字段_tablename
在设置后无法访问,您可以将其声明为ReadOnly
。但请注意,它只能在对象构造期间设置。然后必须在构造函数中进行初始化:
Private ReadOnly _tablename As String
Public ReadOnly Property Tablename() As String
Get
Return _tablename
End Get
End Property
Public Sub New()
' This must happen here, _tablename is readonly from anywhere else:
_tablename = "yourtablename"
End Sub
答案 1 :(得分:0)
如何在构造函数中传递表名的用户控件。在init函数(或构造函数,如果您愿意)中创建表。
然后做:
Private _tablename As String (Initialised at construction)
Public Property TableName() As String
Get
Return _tablename
End Get
End Property