DataGridViewComboBoxCell.DataSource Eigenschaft

Definition

Ruft die Datenquelle ab, deren Daten die mögliche, in der Dropdownliste angezeigte Auswahl enthält, oder legt die Datenquelle fest.Gets or sets the data source whose data contains the possible selections shown in the drop-down list.

public:
 virtual property System::Object ^ DataSource { System::Object ^ get(); void set(System::Object ^ value); };
public virtual object DataSource { get; set; }
member this.DataSource : obj with get, set
Public Overridable Property DataSource As Object

Eigenschaftswert

Eine IList oder eine IListSource, die eine Werteauflistung zum Bereitstellen von Daten in der Dropdownliste enthält.An IList or IListSource that contains a collection of values used to supply data to the drop-down list. Der Standardwert ist nullsein.The default value is null.

Ausnahmen

Beim Festlegen dieser Eigenschaft ist der angegebene Wert nicht null und gehört nicht zum Typ IList oder IListSource.The specified value when setting this property is not null and is not of type IList nor IListSource.

Beispiele

Im folgenden Codebeispiel wird die Verwendung DataGridViewComboBoxColumn.DataSource der-Eigenschaft veranschaulicht, die dieser Eigenschaft ähnelt.The following code example demonstrates the use of the DataGridViewComboBoxColumn.DataSource property, which is similar to this property. Dieses Beispiel ist Teil eines größeren Beispiels, das im Thema DataGridViewComboBoxColumn Übersicht über die Klasse verfügbar ist.This example is part of a larger example available in the DataGridViewComboBoxColumn class overview topic.

private:
    DataGridViewComboBoxColumn^ CreateComboBoxColumn()
    {
        DataGridViewComboBoxColumn^ column =
            gcnew DataGridViewComboBoxColumn();
        {
            column->DataPropertyName = ColumnName::TitleOfCourtesy.ToString();
            column->HeaderText = ColumnName::TitleOfCourtesy.ToString();
            column->DropDownWidth = 160;
            column->Width = 90;
            column->MaxDropDownItems = 3;
            column->FlatStyle = FlatStyle::Flat;
        }
        return column;
    }

private:
    void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn^ comboboxColumn)
    {
        {
            comboboxColumn->DataSource = RetrieveAlternativeTitles();
            comboboxColumn->ValueMember = ColumnName::TitleOfCourtesy.ToString();
            comboboxColumn->DisplayMember = comboboxColumn->ValueMember;
        }
    }

private:
    DataTable^ RetrieveAlternativeTitles()
    {
        return Populate("SELECT distinct TitleOfCourtesy FROM Employees");
    }

    String^ connectionString;

private:
    DataTable^ Populate(String^ sqlCommand)
    {
        SqlConnection^ northwindConnection = gcnew SqlConnection(connectionString);
        northwindConnection->Open();

        SqlCommand^ command = gcnew SqlCommand(sqlCommand, northwindConnection);
        SqlDataAdapter^ adapter = gcnew SqlDataAdapter();
        adapter->SelectCommand = command;

        DataTable^ table = gcnew DataTable();
        adapter->Fill(table);

        return table;
    }

    // Using an enum provides some abstraction between column index
    // and column name along with compile time checking, and gives
    // a handy place to store the column names.
    enum class ColumnName
    {
        EmployeeID,
        LastName,
        FirstName,
        Title,
        TitleOfCourtesy,
        BirthDate,
        HireDate,
        Address,
        City,
        Region,
        PostalCode,
        Country,
        HomePhone,
        Extension,
        Photo,
        Notes,
        ReportsTo,
        PhotoPath,
        OutOfOffice
    };
private DataGridViewComboBoxColumn CreateComboBoxColumn()
{
    DataGridViewComboBoxColumn column =
        new DataGridViewComboBoxColumn();
    {
        column.DataPropertyName = ColumnName.TitleOfCourtesy.ToString();
        column.HeaderText = ColumnName.TitleOfCourtesy.ToString();
        column.DropDownWidth = 160;
        column.Width = 90;
        column.MaxDropDownItems = 3;
        column.FlatStyle = FlatStyle.Flat;
    }
    return column;
}

private void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn comboboxColumn)
{
    {
        comboboxColumn.DataSource = RetrieveAlternativeTitles();
        comboboxColumn.ValueMember = ColumnName.TitleOfCourtesy.ToString();
        comboboxColumn.DisplayMember = comboboxColumn.ValueMember;
    }
}

private DataTable RetrieveAlternativeTitles()
{
    return Populate("SELECT distinct TitleOfCourtesy FROM Employees");
}

string connectionString =
    "Integrated Security=SSPI;Persist Security Info=False;" +
    "Initial Catalog=Northwind;Data Source=localhost";

private DataTable Populate(string sqlCommand)
{
    SqlConnection northwindConnection = new SqlConnection(connectionString);
    northwindConnection.Open();

    SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = command;

    DataTable table = new DataTable();
    table.Locale = System.Globalization.CultureInfo.InvariantCulture;
    adapter.Fill(table);

    return table;
}

// Using an enum provides some abstraction between column index
// and column name along with compile time checking, and gives
// a handy place to store the column names.
enum ColumnName
{
    EmployeeId,
    LastName,
    FirstName,
    Title,
    TitleOfCourtesy,
    BirthDate,
    HireDate,
    Address,
    City,
    Region,
    PostalCode,
    Country,
    HomePhone,
    Extension,
    Photo,
    Notes,
    ReportsTo,
    PhotoPath,
    OutOfOffice
};
Private Function CreateComboBoxColumn() _
    As DataGridViewComboBoxColumn
    Dim column As New DataGridViewComboBoxColumn()

    With column
        .DataPropertyName = ColumnName.TitleOfCourtesy.ToString()
        .HeaderText = ColumnName.TitleOfCourtesy.ToString()
        .DropDownWidth = 160
        .Width = 90
        .MaxDropDownItems = 3
        .FlatStyle = FlatStyle.Flat
    End With
    Return column
End Function

Private Sub SetAlternateChoicesUsingDataSource( _
    ByVal comboboxColumn As DataGridViewComboBoxColumn)
    With comboboxColumn
        .DataSource = RetrieveAlternativeTitles()
        .ValueMember = ColumnName.TitleOfCourtesy.ToString()
        .DisplayMember = .ValueMember
    End With
End Sub

Private Function RetrieveAlternativeTitles() As DataTable
    Return Populate( _
        "SELECT distinct TitleOfCourtesy FROM Employees")
End Function

Private connectionString As String = _
        "Integrated Security=SSPI;Persist Security Info=False;" _
        & "Initial Catalog=Northwind;Data Source=localhost"

Private Function Populate(ByVal sqlCommand As String) As DataTable
    Dim northwindConnection As New SqlConnection(connectionString)
    northwindConnection.Open()

    Dim command As New SqlCommand(sqlCommand, _
        northwindConnection)
    Dim adapter As New SqlDataAdapter()
    adapter.SelectCommand = command
    Dim table As New DataTable()
    table.Locale = System.Globalization.CultureInfo.InvariantCulture
    adapter.Fill(table)

    Return table
End Function

' Using an enum provides some abstraction between column index
' and column name along with compile time checking, and gives
' a handy place to store the column names.
Enum ColumnName
    EmployeeId
    LastName
    FirstName
    Title
    TitleOfCourtesy
    BirthDate
    HireDate
    Address
    City
    Region
    PostalCode
    Country
    HomePhone
    Extension
    Photo
    Notes
    ReportsTo
    PhotoPath
    OutOfOffice
End Enum

Hinweise

In der Regel wird diese Eigenschaft für eine ganze Spalte von Zellen über DataGridViewComboBoxColumn.DataSource die-Eigenschaft festgelegt.Typically this property is set for an entire column of cells through the DataGridViewComboBoxColumn.DataSource property.

Legen Sie, wenn DataSource möglich, auf eine Quelle fest, die nur die mögliche Auswahl enthält, z. b. eine Spalte mit Auswahl.If possible, set DataSource to a source containing only the possible selections, like a column of selections. Dann muss DisplayMember die-Eigenschaft nicht festgelegt werden.Then the DisplayMember property doesn't need to be set. Wenn die Quelle jedoch komplizierter ist, legen Sie DisplayMember auf den Namen der Eigenschaft oder Spalte fest, aus der die mögliche Auswahl abgerufen werden soll.But if the source is more complicated, set DisplayMember to the name of the property or column from which to retrieve possible selections.

Wenn DataSource auf ein Zeichen folgen Array festgelegt ist ValueMember , DisplayMember müssen und nicht festgelegt werden, da jede Zeichenfolge im Array sowohl für den Wert als auch für die Anzeige verwendet wird.If DataSource is set to a string array, then ValueMember and DisplayMember do not need to be set because each string in the array will be used for both value and display.

Das ändern DataSource der Eigenschaft bewirkt, dass die Zelle die Auflistung Items erneut initialisiert und sich selbst neu zeichnet.Changing the DataSource property causes the cell to reinitialize its Items collection and redraw itself.

Wenn Sie den Wert der DataSource -Eigenschaft ändern, versucht das-Steuerelement, den DisplayMember ValueMember -Eigenschafts Wert und den-Eigenschafts Wert mit der neuen null Datenquelle zu verwenden, und legt jede Eigenschaft auf fest, wenn der Wert nicht gefunden wirdWhen you change the value of the DataSource property, the control attempts to use the ValueMember and DisplayMember property values with the new data source, and sets each property to null if its value cannot be found. Alle Ausnahmen, die während dieses Prozesses auftreten, werden ignoriert, es sei denn, es handelt sich NullReferenceExceptionum eine der ThreadAbortExceptionfolgenden ExecutionEngineExceptionkritischen IndexOutOfRangeExceptionAusnahmen: AccessViolationException, StackOverflowException, OutOfMemoryException,,, oder.Any exception that occurs during this process is ignored unless it is one of the following critical exceptions: NullReferenceException, StackOverflowException, OutOfMemoryException, ThreadAbortException, ExecutionEngineException, IndexOutOfRangeException, or AccessViolationException.

Wenn festgelegt DataGridViewComboBoxCell Disposed ist, wird das an das-Ereignis der Datenquelle angefügt. DataSourceWhen the DataSource is set, the DataGridViewComboBoxCell attaches to the Disposed event of the data source. Wenn die DataGridViewComboBoxCell von der DataGridViewgetrennt wird, wird die Ressource nicht sofort freigegeben.When the DataGridViewComboBoxCell is detached from the DataGridView, the resource is not immediately released. Die DataGridViewComboBoxCell Ressource wird freigegeben, wenn die angefügte Datenquelle verworfen wird.The DataGridViewComboBoxCell resource is released when the attached data source is disposed. Legen Sie die DataSource - nullEigenschaft auf fest, um die Ressource für Garbage Collection sofort freizugeben.To release the resource for garbage collection immediately, set the DataSource property to null.

Gilt für:

Siehe auch