Freigeben über


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.

public:
 virtual property System::Object ^ DataSource { System::Object ^ get(); void set(System::Object ^ value); };
public virtual object DataSource { get; set; }
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. Der Standardwert ist null.

Ausnahmen

Beim Festlegen dieser Eigenschaft ist der angegebene Wert nicht null und gehört nicht zum Typ IList oder IListSource.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der DataGridViewComboBoxColumn.DataSource -Eigenschaft veranschaulicht, die dieser Eigenschaft ähnelt. Dieses Beispiel ist Teil eines größeren Beispiels, das DataGridViewComboBoxColumn im Thema Klassenübersicht verfügbar ist.

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 gesamte Zellspalte über die DataGridViewComboBoxColumn.DataSource -Eigenschaft festgelegt.

Legen Sie nach Möglichkeit auf eine Quelle fest DataSource , die nur die möglichen Auswahlen enthält, z. B. eine Spalte mit Auswahlen. Dann muss die DisplayMember Eigenschaft nicht festgelegt werden. Wenn die Quelle jedoch komplizierter ist, legen Sie auf den Namen der Eigenschaft oder Spalte fest DisplayMember , aus der mögliche Auswahlen abgerufen werden sollen.

Wenn DataSource auf ein Zeichenfolgenarray ValueMember festgelegt ist, müssen und DisplayMember nicht festgelegt werden, da jede Zeichenfolge im Array sowohl für den Wert als auch für die Anzeige verwendet wird.

Das Ändern der DataSource Eigenschaft führt dazu, dass die Zelle ihre Items Auflistung neu initialisiert und sich selbst neu zeichnet.

Wenn Sie den Wert der DataSource Eigenschaft ändern, versucht das Steuerelement, die Eigenschaftenwerte und DisplayMember mit der ValueMember neuen Datenquelle zu verwenden, und legt jede Eigenschaft auf festnull, wenn ihr Wert nicht gefunden werden kann. Jede Ausnahme, die während dieses Prozesses auftritt, wird ignoriert, es sei denn, es handelt sich um eine der folgenden kritischen Ausnahmen: NullReferenceException, StackOverflowException, OutOfMemoryException, ThreadAbortExceptionExecutionEngineException, IndexOutOfRangeExceptionoder AccessViolationException.

Wenn festgelegt DataSource ist, wird das DataGridViewComboBoxCell an das Disposed Ereignis der Datenquelle angefügt. Wenn die DataGridViewComboBoxCell von DataGridViewgetrennt ist, wird die Ressource nicht sofort freigegeben. Die DataGridViewComboBoxCell Ressource wird freigegeben, wenn die angefügte Datenquelle verworfen wird. Um die Ressource für die Garbage Collection sofort freizugeben, legen Sie die DataSource -Eigenschaft auf fest null.

Gilt für:

Weitere Informationen