Control.ClearChildViewState メソッド
サーバー コントロールのすべての子コントロールのビューステート情報を削除します。
Protected Sub ClearChildViewState()
[C#]
protected void ClearChildViewState();
[C++]
protected: void ClearChildViewState();
[JScript]
protected function ClearChildViewState();
解説
このメソッドは、通常、テンプレート宣言されたデータ連結サーバー コントロールを開発する場合に、 DataBind メソッドをオーバーライドするときに使用されます。このメソッドを呼び出さない場合、子コントロールのビューステートの情報は親サーバー コントロールに書き込むことができますが、データ連結が発生するとオーバーライドされます。
このメソッドの使用方法については、「 template 宣言のあるデータ連結コントロールの開発 」を参照してください。
使用例
テンプレート宣言されたデータ連結コントロールの OnDataBinding メソッドのオーバーライドの例を次に示します。コントロールが連結する DataSource が設定される場合は、 Controls.Clear メソッドを使用してコントロールの ControlCollection が空になり、 ClearChildViewState メソッドを使用して子コントロールに対して保存されたビューステート情報が削除されます。
' Override to create the repeated items from the DataSource.
Protected Overrides Sub OnDataBinding(E As EventArgs)
MyBase.OnDataBinding(e)
If Not DataSource Is Nothing
' Clear any existing child controls.
Controls.Clear()
' Clear any previous view state for the existing child controls.
ClearChildViewState()
' Iterate over the DataSource, creating a new item for each data item.
Dim DataEnum As IEnumerator = DataSource.GetEnumerator()
Dim I As Integer = 0
Do While (DataEnum.MoveNext())
' Create an item.
Dim Item As RepeaterItemVB = New RepeaterItemVB(I, DataEnum.Current)
' Initialize the item from the template.
ItemTemplate.InstantiateIn(Item)
' Add the item to the ControlCollection.
Controls.Add(Item)
I = I + 1
Loop
' Prevent child controls from being created again.
ChildControlsCreated = true
' Store the number of items created in view state for postback scenarios.
ViewState("NumItems") = I
End If
End Sub
[C#]
// Override to create the repeated items from the DataSource.
protected override void OnDataBinding(EventArgs e) {
base.OnDataBinding(e);
if (DataSource != null) {
// Clear any existing child controls.
Controls.Clear();
// Clear any previous view state for the existing child controls.
ClearChildViewState();
// Iterate over the DataSource, creating a new item for each data item.
IEnumerator dataEnum = DataSource.GetEnumerator();
int i = 0;
while(dataEnum.MoveNext()) {
// Create an item.
RepeaterItem item = new RepeaterItem(i, dataEnum.Current);
// Initialize the item from the template.
ItemTemplate.InstantiateIn(item);
// Add the item to the ControlCollection.
Controls.Add(item);
i++;
}
// Prevent child controls from being created again.
ChildControlsCreated = true;
// Store the number of items created in view state for postback scenarios.
ViewState["NumItems"] = i;
}
}
[C++]
// Override to create the repeated items from the DataSource.
protected:
void OnDataBinding(EventArgs * e)
{
__super::OnDataBinding(e);
if (DataSource != 0)
{
// Clear any existing child controls.
Controls->Clear();
// Clear any previous view state for the existing child controls.
ClearChildViewState();
// Iterate over the DataSource, creating a new item for each data item.
IEnumerator* dataEnum = DataSource->GetEnumerator();
int i = 0;
while(dataEnum->MoveNext())
{
// Create an item.
RepeaterItem* item = new RepeaterItem(i, dataEnum->Current);
// Initialize the item from the template.
ItemTemplate->InstantiateIn(item);
// Add the item to the ControlCollection.
Controls->Add(item);
i++;
}
// Prevent child controls from being created again.
ChildControlsCreated = true;
// Store the number of items created in view state for postback scenarios.
ViewState->Item[S"NumItems"] = __box(i);
}
}
[JScript]
// Override to create the repeated items from the DataSource.
protected override function OnDataBinding(e : EventArgs) {
super.OnDataBinding(e);
if (DataSource != null) {
// Clear any existing child controls.
Controls.Clear();
// Clear any previous view state for the existing child controls.
ClearChildViewState();
// Iterate over the DataSource, creating a new item for each data item.
var dataEnum : IEnumerator = DataSource.GetEnumerator();
var i : int = 0;
while(dataEnum.MoveNext()) {
// Create an item.
var item : RepeaterItem = new RepeaterItem(i, dataEnum.Current);
// Initialize the item from the template.
ItemTemplate.InstantiateIn(item);
// Add the item to the ControlCollection.
Controls.Add(item);
i++;
}
// Prevent child controls from being created again.
ChildControlsCreated = true;
// Store the number of items created in view state for postback scenarios.
ViewState["NumItems"] = i;
}
}
必要条件
プラットフォーム: Windows 2000, Windows XP Professional, Windows Server 2003 ファミリ
参照
Control クラス | Control メンバ | System.Web.UI 名前空間 | ViewState | DataBind | template 宣言のあるデータ連結コントロールの開発