CompositeDataBoundControl 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示由其他服务器控件组成的表格数据绑定控件的基类。
public ref class CompositeDataBoundControl abstract : System::Web::UI::WebControls::DataBoundControl, System::Web::UI::INamingContainer
public abstract class CompositeDataBoundControl : System.Web.UI.WebControls.DataBoundControl, System.Web.UI.INamingContainer
type CompositeDataBoundControl = class
inherit DataBoundControl
interface INamingContainer
Public MustInherit Class CompositeDataBoundControl
Inherits DataBoundControl
Implements INamingContainer
- 继承
- 派生
- 实现
示例
下面的代码示例演示如何创建自定义复合数据绑定控件,该控件显示表中数据源的值。
using System;
using System.Collections;
using System.Data.Common;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Samples.AspNet.CS
{
public class SimpleSpreadsheetControl : CompositeDataBoundControl
{
protected Table table = new Table();
public virtual TableRowCollection Rows
{
get
{
return table.Rows;
}
}
protected override int CreateChildControls(IEnumerable dataSource, bool dataBinding)
{
int count = 0;
// If dataSource is not null, iterate through it and
// extract each element from it as a row, then
// create a SimpleSpreadsheetRow and add it to the
// rows collection.
if (dataSource != null)
{
SimpleSpreadsheetRow row;
IEnumerator e = dataSource.GetEnumerator();
while (e.MoveNext())
{
object datarow = e.Current;
row = new SimpleSpreadsheetRow(count, datarow);
this.Rows.Add(row);
++count;
}
Controls.Add(table);
}
return count;
}
}
//
//
public class SimpleSpreadsheetRow : TableRow, IDataItemContainer
{
private object data;
private int _itemIndex;
public SimpleSpreadsheetRow(int itemIndex, object o)
{
data = o;
_itemIndex = itemIndex;
}
public virtual object Data
{
get
{
return data;
}
}
object IDataItemContainer.DataItem
{
get
{
return Data;
}
}
int IDataItemContainer.DataItemIndex
{
get
{
return _itemIndex;
}
}
int IDataItemContainer.DisplayIndex
{
get
{
return _itemIndex;
}
}
protected override void RenderContents(HtmlTextWriter writer)
{
if (Data != null)
{
if (Data is System.Data.Common.DbDataRecord)
{
DbDataRecord temp = (DbDataRecord)Data;
for (int i = 0; i < temp.FieldCount; ++i)
{
writer.Write("<TD>");
writer.Write(temp.GetValue(i).ToString());
writer.Write("</TD>");
}
}
else
{
writer.Write("<TD>" + Data.ToString() + "</TD>");
}
}
else
{
writer.Write("<TD>This is a test</TD>");
}
}
}
}
Imports System.Collections
Imports System.Data.Common
Imports System.Web.UI
Imports System.Web.UI.WebControls
Namespace Samples.AspNet.VB
Public Class SimpleSpreadsheetControl
Inherits CompositeDataBoundControl
Protected table As New Table()
Public Overridable ReadOnly Property Rows() As TableRowCollection
Get
Return table.Rows
End Get
End Property
Protected Overrides Function CreateChildControls(ByVal dataSource As IEnumerable, ByVal dataBinding As Boolean) As Integer
Dim count As Integer = 0
' If dataSource is not Nothing, iterate through it and
' extract each element from it as a row, then
' create a SimpleSpreadsheetRow and add it to the
' rows collection.
If Not (dataSource Is Nothing) Then
Dim row As SimpleSpreadsheetRow
Dim e As IEnumerator = dataSource.GetEnumerator()
While e.MoveNext()
Dim datarow As Object = e.Current
row = New SimpleSpreadsheetRow(count, datarow)
Me.Rows.Add(row)
count += 1
End While
Controls.Add(table)
End If
Return count
End Function 'CreateChildControls
End Class
Public Class SimpleSpreadsheetRow
Inherits TableRow
Implements IDataItemContainer
Private dataObj As Object
Private _itemIndex As Integer
Public Sub New(ByVal itemIndex As Integer, ByVal o As Object)
dataObj = o
_itemIndex = itemIndex
End Sub
Public Overridable ReadOnly Property Data() As Object
Get
Return dataObj
End Get
End Property
ReadOnly Property DataItem() As Object Implements IDataItemContainer.DataItem
Get
Return Data
End Get
End Property
ReadOnly Property DataItemIndex() As Integer Implements IDataItemContainer.DataItemIndex
Get
Return _itemIndex
End Get
End Property
ReadOnly Property DisplayIndex() As Integer Implements IDataItemContainer.DisplayIndex
Get
Return _itemIndex
End Get
End Property
Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
If Not (Data Is Nothing) Then
If TypeOf Data Is System.Data.Common.DbDataRecord Then
Dim temp As DbDataRecord = CType(Data, DbDataRecord)
Dim i As Integer
While i < temp.FieldCount
writer.Write("<TD>")
writer.Write(temp.GetValue(i).ToString())
writer.Write("</TD>")
i += 1
End While
Else
writer.Write(("<TD>" + Data.ToString() + "</TD>"))
End If
Else
writer.Write("<TD>This is a test</TD>")
End If
End Sub
End Class
End Namespace
注解
该 CompositeDataBoundControl 类充当绑定到数据源中的数据的复合服务器控件的基类。 复合服务器控件是从其他服务器控件的组合生成的控件。 页面开发人员不直接使用该 CompositeDataBoundControl 类;而是使用派生自此类的控件。 复合数据绑定控件的示例包括DetailsView和FormViewGridView控件。
继承自控件的 CompositeDataBoundControl 类必须重写 CreateChildControls(IEnumerable, Boolean) 方法才能创建控件层次结构。 若要访问复合数据绑定控件的子控件,请使用 Controls 集合。
实施者说明
从CompositeDataBoundControl类继承时,必须重写以下成员: CreateChildControls(IEnumerable, Boolean)
构造函数
| 名称 | 说明 |
|---|---|
| CompositeDataBoundControl() |
初始化 CompositeDataBoundControl 类的新实例。 |
属性
| 名称 | 说明 |
|---|---|
| AccessKey |
获取或设置访问密钥,使你能够快速导航到 Web 服务器控件。 (继承自 WebControl) |
| Adapter |
获取控件的特定于浏览器的适配器。 (继承自 Control) |
| AppRelativeTemplateSourceDirectory |
获取或设置包含此控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。 (继承自 Control) |
| Attributes |
获取不对应于控件上的属性的任意属性(仅用于呈现)的集合。 (继承自 WebControl) |
| BackColor |
获取或设置 Web 服务器控件的背景色。 (继承自 WebControl) |
| BindingContainer |
获取包含此控件的数据绑定的控件。 (继承自 Control) |
| BorderColor |
获取或设置 Web 控件的边框颜色。 (继承自 WebControl) |
| BorderStyle |
获取或设置 Web 服务器控件的边框样式。 (继承自 WebControl) |
| BorderWidth |
获取或设置 Web 服务器控件的边框宽度。 (继承自 WebControl) |
| ChildControlsCreated |
获取一个值,该值指示是否已创建服务器控件的子控件。 (继承自 Control) |
| ClientID |
获取由 ASP.NET 生成的 HTML 标记的控件 ID。 (继承自 Control) |
| ClientIDMode |
获取或设置用于生成属性值的 ClientID 算法。 (继承自 Control) |
| ClientIDSeparator |
获取一个表示属性中使用的 ClientID 分隔符的字符值。 (继承自 Control) |
| Context |
HttpContext获取与当前 Web 请求的服务器控件关联的对象。 (继承自 Control) |
| Controls |
获取复合数据绑定控件中的子控件的集合。 |
| ControlStyle |
获取 Web 服务器控件的样式。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
| ControlStyleCreated |
获取一个值,该值 Style 指示是否已为 ControlStyle 属性创建对象。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
| CssClass |
获取或设置由客户端上的 Web 服务器控件呈现的级联样式表 (CSS) 类。 (继承自 WebControl) |
| DataItemContainer |
获取对命名容器的引用(如果命名容器实现 IDataItemContainer)。 (继承自 Control) |
| DataKeysContainer |
获取对命名容器的引用(如果命名容器实现 IDataKeysControl)。 (继承自 Control) |
| DataMember |
获取或设置数据绑定控件绑定到的数据列表的名称,以防数据源包含多个不同的数据项列表。 (继承自 DataBoundControl) |
| DataSource |
获取或设置数据绑定控件从中检索其数据项列表的对象。 (继承自 BaseDataBoundControl) |
| DataSourceID |
获取或设置数据绑定控件从中检索其数据项列表的控件的 ID。 (继承自 DataBoundControl) |
| DataSourceObject |
获取实现 IDataSource 接口的对象,该接口提供对对象数据内容的访问权限。 (继承自 DataBoundControl) |
| DeleteMethod |
获取或设置要调用的方法的名称,以便删除数据。 |
| DesignMode |
获取一个值,该值指示控件是否在设计图面上使用。 (继承自 Control) |
| Enabled |
获取或设置一个值,该值指示是否启用 Web 服务器控件。 (继承自 WebControl) |
| EnableTheming |
获取或设置一个值,该值指示主题是否应用于此控件。 (继承自 WebControl) |
| EnableViewState |
获取或设置一个值,该值指示服务器控件是否将视图状态及其包含的任何子控件的视图状态保存到请求客户端。 (继承自 Control) |
| Events |
获取控件的事件处理程序委托的列表。 此属性为只读。 (继承自 Control) |
| Font |
获取与 Web 服务器控件关联的字体属性。 (继承自 WebControl) |
| ForeColor |
获取或设置 Web 服务器控件的前景色(通常是文本的颜色)。 (继承自 WebControl) |
| HasAttributes |
获取一个值,该值指示控件是否设置了属性。 (继承自 WebControl) |
| HasChildViewState |
获取一个值,该值指示当前服务器控件的子控件是否具有保存的视图状态设置。 (继承自 Control) |
| Height |
获取或设置 Web 服务器控件的高度。 (继承自 WebControl) |
| ID |
获取或设置分配给服务器控件的编程标识符。 (继承自 Control) |
| IdSeparator |
获取用于分隔控件标识符的字符。 (继承自 Control) |
| Initialized |
获取一个值,该值指示是否已初始化数据绑定控件。 (继承自 BaseDataBoundControl) |
| InsertMethod |
获取或设置要调用的方法的名称,以便插入数据。 |
| IsBoundUsingDataSourceID |
获取一个值,该值指示是否已 DataSourceID 设置属性。 (继承自 BaseDataBoundControl) |
| IsChildControlStateCleared |
获取一个值,该值指示此控件中包含的控件是否具有控件状态。 (继承自 Control) |
| IsDataBindingAutomatic |
获取一个值,该值指示数据绑定是否自动。 (继承自 BaseDataBoundControl) |
| IsEnabled |
获取一个值,该值指示是否启用控件。 (继承自 WebControl) |
| IsTrackingViewState |
获取一个值,该值指示服务器控件是否正在保存对其视图状态的更改。 (继承自 Control) |
| IsUsingModelBinders |
获取一个值,该值指示是否正在使用模型绑定。 |
| IsViewStateEnabled |
获取一个值,该值指示是否为此控件启用视图状态。 (继承自 Control) |
| ItemType |
获取或设置强类型数据绑定的数据类型的名称。 (继承自 DataBoundControl) |
| LoadViewStateByID |
获取一个值,该值指示控件是否参与加载其视图状态,而不是 ID 索引。 (继承自 Control) |
| NamingContainer |
获取对服务器控件命名容器的引用,该容器创建唯一的命名空间,用于区分具有相同 ID 属性值的服务器控件。 (继承自 Control) |
| Page |
获取对 Page 包含服务器控件的实例的引用。 (继承自 Control) |
| Parent |
获取对页面控件层次结构中服务器控件的父控件的引用。 (继承自 Control) |
| RenderingCompatibility |
获取一个值,该值指定呈现的 HTML 将与 ASP.NET 版本兼容。 (继承自 Control) |
| RequiresDataBinding |
获取或设置一个值,该值指示是否 DataBind() 应调用该方法。 (继承自 BaseDataBoundControl) |
| SelectArguments |
DataSourceSelectArguments获取数据绑定控件在从数据源控件检索数据时使用的对象。 (继承自 DataBoundControl) |
| SelectMethod |
要调用的方法的名称,以便读取数据。 (继承自 DataBoundControl) |
| Site |
获取有关在设计图面上呈现时承载当前控件的容器的信息。 (继承自 Control) |
| SkinID |
获取或设置要应用于控件的皮肤。 (继承自 WebControl) |
| Style |
获取文本属性的集合,该属性将在 Web 服务器控件的外部标记上呈现为样式属性。 (继承自 WebControl) |
| SupportsDisabledAttribute |
获取一个值,该值指示当控件的属性为控件的属性时,控件是否应将呈现的 |
| TabIndex |
获取或设置 Web 服务器控件的选项卡索引。 (继承自 WebControl) |
| TagKey |
HtmlTextWriterTag获取与此 Web 服务器控件对应的值。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
| TagName |
获取控件标记的名称。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
| TemplateControl |
获取或设置对包含此控件的模板的引用。 (继承自 Control) |
| TemplateSourceDirectory |
获取包含当前服务器控件的 Page 虚拟 UserControl 目录。 (继承自 Control) |
| ToolTip |
获取或设置鼠标指针悬停在 Web 服务器控件上时显示的文本。 (继承自 WebControl) |
| UniqueID |
获取服务器控件的唯一分层限定标识符。 (继承自 Control) |
| UpdateMethod |
获取或设置要调用以更新数据的方法的名称。 |
| ValidateRequestMode |
获取或设置一个值,该值指示控件是否检查浏览器的客户端输入是否存在潜在危险值。 (继承自 Control) |
| ViewState |
获取状态信息的字典,该字典允许跨同一页的多个请求保存和还原服务器控件的视图状态。 (继承自 Control) |
| ViewStateIgnoresCase |
获取一个值,该值指示对象是否 StateBag 不区分大小写。 (继承自 Control) |
| ViewStateMode |
获取或设置此控件的视图状态模式。 (继承自 Control) |
| Visible |
获取或设置一个值,该值指示服务器控件是否呈现为页面上的 UI。 (继承自 Control) |
| Width |
获取或设置 Web 服务器控件的宽度。 (继承自 WebControl) |
方法
活动
| 名称 | 说明 |
|---|---|
| CallingDataMethods |
在调用数据方法时发生。 (继承自 DataBoundControl) |
| CreatingModelDataSource |
在创建对象时 ModelDataSource 发生。 (继承自 DataBoundControl) |
| DataBinding |
当服务器控件绑定到数据源时发生。 (继承自 Control) |
| DataBound |
在服务器控件绑定到数据源之后发生。 (继承自 BaseDataBoundControl) |
| Disposed |
在从内存中释放服务器控件时发生,这是请求 ASP.NET 页时服务器控件生命周期的最后阶段。 (继承自 Control) |
| Init |
在初始化服务器控件时发生,这是其生命周期中的第一步。 (继承自 Control) |
| Load |
在将服务器控件加载到对象中 Page 时发生。 (继承自 Control) |
| PreRender |
在 Control 加载对象但在呈现之前发生。 (继承自 Control) |
| Unload |
从内存中卸载服务器控件时发生。 (继承自 Control) |
显式接口实现
扩展方法
| 名称 | 说明 |
|---|---|
| EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
为指定的数据控件启用动态数据行为。 |
| EnableDynamicData(INamingContainer, Type, Object) |
为指定的数据控件启用动态数据行为。 |
| EnableDynamicData(INamingContainer, Type) |
为指定的数据控件启用动态数据行为。 |
| EnablePersistedSelection(BaseDataBoundControl) |
已过时.
允许选择保留在支持选择和分页的数据控件中。 |
| FindDataSourceControl(Control) |
返回与指定控件的数据控件关联的数据源。 |
| FindFieldTemplate(Control, String) |
返回指定控件命名容器中指定列的字段模板。 |
| FindMetaTable(Control) |
返回包含数据控件的元表对象。 |
| GetDefaultValues(INamingContainer) |
获取指定数据控件的默认值的集合。 |
| GetMetaTable(INamingContainer) |
获取指定数据控件的表元数据。 |
| SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>) |
设置指定数据控件的表元数据和默认值映射。 |
| SetMetaTable(INamingContainer, MetaTable, Object) |
设置指定数据控件的表元数据和默认值映射。 |
| SetMetaTable(INamingContainer, MetaTable) |
设置指定数据控件的表元数据。 |
| TryGetMetaTable(INamingContainer, MetaTable) |
确定表元数据是否可用。 |