DesignerDataSourceView 类

定义

用作设计时数据源视图类的基类。

public ref class DesignerDataSourceView abstract
public abstract class DesignerDataSourceView
type DesignerDataSourceView = class
Public MustInherit Class DesignerDataSourceView
继承
DesignerDataSourceView
派生

示例

下面的代码示例演示如何创建自定义 DesignerDataSourceView 对象以及一个自定义 IDataSourceViewSchema 类和两个自定义 IDataSourceFieldSchema 类。

此示例是 类的较大示例的 DataSourceDesigner 一部分。

// A design-time data source view
public class CustomDesignDataSourceView : DesignerDataSourceView
{
    private ArrayList _data = null;

    public CustomDesignDataSourceView(
        CustomDataSourceDesigner owner, string viewName)
        : base(owner, viewName)
    {}

    // Get data for design-time display
    public override IEnumerable GetDesignTimeData(
        int minimumRows, out bool isSampleData)
    {
        if (_data == null)
        {
            // Create a set of design-time fake data
            _data = new ArrayList();
            for (int i = 1; i <= minimumRows; i++)
            {
                _data.Add(new BookItem("ID_" + i.ToString(),
                    "Design-Time Title 0" + i.ToString()));
            }
        }
        isSampleData = true;
        return _data as IEnumerable;
    }

    public override IDataSourceViewSchema Schema
    {
        get { return new BookListViewSchema(); }
    }

    // Allow getting the record count
    public override bool CanRetrieveTotalRowCount
    {
        get { return true; }
    }
    // Do not allow deletions
    public override bool CanDelete
    {
        get { return false; }
    }
    // Do not allow insertions
    public override bool CanInsert
    {
        get { return false; }
    }
    // Do not allow updates
    public override bool CanUpdate
    {
        get { return false; }
    }
    // Do not allow paging
    public override bool CanPage
    {
        get { return false; }
    }
    // Do not allow sorting
    public override bool CanSort
    {
        get { return false; }
    }
}
' A     design-time data source view
Public Class CustomDesignDataSourceView
    Inherits DesignerDataSourceView

    Private _data As ArrayList = Nothing

    Public Sub New(ByVal owner As CustomDataSourceDesigner, ByVal viewName As String)
        MyBase.New(owner, viewName)
    End Sub

    ' Get data for design-time display
    Public Overrides Function GetDesignTimeData( _
        ByVal minimumRows As Integer, _
        ByRef isSampleData As Boolean) As IEnumerable

        If IsNothing(_data) Then
            ' Create a set of design-time fake data
            _data = New ArrayList()
            Dim i As Integer
            For i = 1 To minimumRows
                _data.Add(New BookItem("ID_" & i.ToString(), _
                    "Design-Time Title 0" & i.ToString()))
            Next
        End If
        isSampleData = True
        Return CType(_data, IEnumerable)
    End Function

    Public Overrides ReadOnly Property Schema() As IDataSourceViewSchema
        Get
            Return New BookListViewSchema()
        End Get
    End Property

    ' Allow getting the record count
    Public Overrides ReadOnly Property CanRetrieveTotalRowCount() As Boolean
        Get
            Return True
        End Get
    End Property
    ' Do not allow deletions
    Public Overrides ReadOnly Property CanDelete() As Boolean
        Get
            Return False
        End Get
    End Property
    ' Do not allow insertions
    Public Overrides ReadOnly Property CanInsert() As Boolean
        Get
            Return False
        End Get
    End Property
    ' Do not allow updates
    Public Overrides ReadOnly Property CanUpdate() As Boolean
        Get
            Return False
        End Get
    End Property
    ' Do not allow paging
    Public Overrides ReadOnly Property CanPage() As Boolean
        Get
            Return False
        End Get
    End Property
    ' Do not allow sorting
    Public Overrides ReadOnly Property CanSort() As Boolean
        Get
            Return False
        End Get
    End Property
End Class
// A custom View Schema class
public class BookListViewSchema : IDataSourceViewSchema
{
    public BookListViewSchema()
    { }

    // The name of this View Schema
    public string Name
    {
        get { return "BookList"; }
    }

    // Build a Field Schema array
    public IDataSourceFieldSchema[] GetFields()
    {
        IDataSourceFieldSchema[] fields = new IDataSourceFieldSchema[2];
        fields[0] = new CustomIDFieldSchema();
        fields[1] = new CustomTitleFieldSchema();
        return fields;
    }
    // There are no child views, so return null
    public IDataSourceViewSchema[] GetChildren()
    {
        return null;
    }
}

// A custom Field Schema class for ID
public class CustomIDFieldSchema : IDataSourceFieldSchema
{
    public CustomIDFieldSchema()
    { }

    // Name is ID
    public string Name
    {
        get { return "ID"; }
    }
    // Data type is string
    public Type DataType
    {
        get { return typeof(string); }
    }
    // This is not an Identity field
    public bool Identity
    {
        get { return false; }
    }
    // This field is read only
    public bool IsReadOnly
    {
        get { return true; }
    }
    // This field is unique
    public bool IsUnique
    {
        get { return true; }
    }
    // This field can't be longer than 20
    public int Length
    {
        get { return 20; }
    }
    // This field can't be null
    public bool Nullable
    {
        get { return false; }
    }
    // This is a Primary Key
    public bool PrimaryKey
    {
        get { return true; }
    }

    // These properties do not apply
    public int Precision
    {
        get { return -1; }
    }
    public int Scale
    {
        get { return -1; }
    }
}

// A custom Field Schema class for Title
public class CustomTitleFieldSchema : IDataSourceFieldSchema
{
    public CustomTitleFieldSchema()
    { }

    // Name is Title
    public string Name
    {
        get { return "Title"; }
    }
    // Type is string
    public Type DataType
    {
        get { return typeof(string); }
    }
    // This is not an Identity field
    public bool Identity
    {
        get { return false; }
    }
    // This field is not read only
    public bool IsReadOnly
    {
        get { return false; }
    }
    // This field is not unique
    public bool IsUnique
    {
        get { return false; }
    }
    // This field can't be longer than 100
    public int Length
    {
        get { return 100; }
    }
    // This field can't be null
    public bool Nullable
    {
        get { return false; }
    }
    // This is not the Primary Key
    public bool PrimaryKey
    {
        get { return false; }
    }

    // These properties do not apply
    public int Precision
    {
        get { return -1; }
    }
    public int Scale
    {
        get { return -1; }
    }
}
' A custom View Schema class
Public Class BookListViewSchema
    Implements IDataSourceViewSchema

    Public Sub New()
    End Sub

    ' The name of this View Schema
    Public ReadOnly Property Name() As String Implements IDataSourceViewSchema.Name
        Get
            Return "BookList"
        End Get
    End Property

    ' Build a Field Schema array
    Public Function GetFields() As IDataSourceFieldSchema() Implements IDataSourceViewSchema.GetFields
        Dim fields(1) As IDataSourceFieldSchema
        fields(0) = New CustomIDFieldSchema()
        fields(1) = New CustomTitleFieldSchema()
        Return fields
    End Function
    ' There are no child views, so return Nothing
    Public Function GetChildren() As IDataSourceViewSchema() Implements IDataSourceViewSchema.GetChildren
        Return Nothing
    End Function
End Class

' A custom Field Schema class for ID
Public Class CustomIDFieldSchema
    Implements IDataSourceFieldSchema

    Public Sub New()
    End Sub

    ' Name is ID
    Public ReadOnly Property Name() As String Implements IDataSourceFieldSchema.Name
        Get
            Return "ID"
        End Get
    End Property
    ' Data type is string
    Public ReadOnly Property DataType() As Type Implements IDataSourceFieldSchema.DataType
        Get
            Return GetType(String)
        End Get
    End Property
    ' This is not an Identity field
    Public ReadOnly Property Identity() As Boolean Implements IDataSourceFieldSchema.Identity
        Get
            Return False
        End Get
    End Property
    ' This field is read only
    Public ReadOnly Property IsReadOnly() As Boolean Implements IDataSourceFieldSchema.IsReadOnly
        Get
            Return True
        End Get
    End Property
    ' This field is unique
    Public ReadOnly Property IsUnique() As Boolean Implements IDataSourceFieldSchema.IsUnique
        Get
            Return True
        End Get
    End Property
    ' This field can't be longer than 20
    Public ReadOnly Property Length() As Integer Implements IDataSourceFieldSchema.Length
        Get
            Return 20
        End Get
    End Property
    ' This field can't be null
    Public ReadOnly Property Nullable() As Boolean Implements IDataSourceFieldSchema.Nullable
        Get
            Return False
        End Get
    End Property
    ' This is a Primary Key
    Public ReadOnly Property PrimaryKey() As Boolean Implements IDataSourceFieldSchema.PrimaryKey
        Get
            Return True
        End Get
    End Property

    ' These properties do not apply
    Public ReadOnly Property Precision() As Integer Implements IDataSourceFieldSchema.Precision
        Get
            Return -1
        End Get
    End Property
    Public ReadOnly Property Scale() As Integer Implements IDataSourceFieldSchema.Scale
        Get
            Return -1
        End Get
    End Property
End Class

' A custom Field Schema class for Title
Public Class CustomTitleFieldSchema
    Implements IDataSourceFieldSchema

    Public Sub New()
    End Sub

    ' Name is Title
    Public ReadOnly Property Name() As String Implements IDataSourceFieldSchema.Name
        Get
            Return "Title"
        End Get
    End Property
    ' Type is string
    Public ReadOnly Property DataType() As Type Implements IDataSourceFieldSchema.DataType
        Get
            Return GetType(String)
        End Get
    End Property
    ' This is not an Identity field
    Public ReadOnly Property Identity() As Boolean Implements IDataSourceFieldSchema.Identity
        Get
            Return False
        End Get
    End Property
    ' This field is not read only
    Public ReadOnly Property IsReadOnly() As Boolean Implements IDataSourceFieldSchema.IsReadOnly
        Get
            Return False
        End Get
    End Property
    ' This field is not unique
    Public ReadOnly Property IsUnique() As Boolean Implements IDataSourceFieldSchema.IsUnique
        Get
            Return False
        End Get
    End Property
    ' This field can't be longer than 100
    Public ReadOnly Property Length() As Integer Implements IDataSourceFieldSchema.Length
        Get
            Return 100
        End Get
    End Property
    ' This field can't be null
    Public ReadOnly Property Nullable() As Boolean Implements IDataSourceFieldSchema.Nullable
        Get
            Return False
        End Get
    End Property
    ' This is not the Primary Key
    Public ReadOnly Property PrimaryKey() As Boolean Implements IDataSourceFieldSchema.PrimaryKey
        Get
            Return False
        End Get
    End Property

    ' These properties do not apply
    Public ReadOnly Property Precision() As Integer Implements IDataSourceFieldSchema.Precision
        Get
            Return -1
        End Get
    End Property
    Public ReadOnly Property Scale() As Integer Implements IDataSourceFieldSchema.Scale
        Get
            Return -1
        End Get
    End Property
End Class

实施者说明

DesignerDataSourceView 类继承时,必须重写 GetDesignTimeData(Int32, Boolean) 方法,以创建符合 Schema 属性的示例数据,或从数据源返回实际数据。

构造函数

DesignerDataSourceView(IDataSourceDesigner, String)

使用指定的数据源设计器和视图名称初始化 DesignerDataSourceView 类的新实例。

属性

CanDelete

获取一个值,该值指示与当前 DataSourceControl 对象相关联的 DataSourceView 对象是否支持 ExecuteDelete(IDictionary, IDictionary) 方法。

CanInsert

获取一个值,该值指示与当前 DataSourceControl 对象相关联的 DataSourceView 对象是否支持 ExecuteInsert(IDictionary) 方法。

CanPage

获取一个值,该值指示与当前 DataSourceControl 对象关联的 DataSourceView 对象是否支持对由 ExecuteSelect(DataSourceSelectArguments) 方法检索到的数据进行分页。

CanRetrieveTotalRowCount

获取一个值,该值指示与当前 DataSourceControl 对象关联的 DataSourceView 对象是否支持检索数据的总行数,而不是检索数据本身。

CanSort

获取一个值,该值指示与当前 DataSourceControl 对象关联的 DataSourceView 对象是否支持基础数据源的排序视图。

CanUpdate

获取一个值,该值指示与当前 DataSourceControl 对象相关联的 DataSourceView 对象是否支持 ExecuteUpdate(IDictionary, IDictionary, IDictionary) 方法。

DataSourceDesigner

获取对创建此 DesignerDataSourceView 控件的设计器的引用。

Name

获取在创建 DesignerDataSourceView 类的此实例时提供的视图的名称。

Schema

获取一个架构,该架构描述此视图对象所表示的数据源视图。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetDesignTimeData(Int32, Boolean)

使用指定的行数生成与关联数据源控件的架构相匹配的设计时数据,以指示其返回示例数据还是实时数据。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅