DataGridViewComboBoxCell.DataSource Proprietà

Definizione

Ottiene o imposta l'origine dati in cui sono contenute le possibili selezioni visualizzate nell'elenco a discesa.

public virtual object DataSource { get; set; }
public virtual object? DataSource { get; set; }

Valore della proprietà

Oggetto IList o IListSource che contiene un insieme di valori utilizzati per fornire i dati dell'elenco a discesa. Il valore predefinito è null.

Eccezioni

Il valore specificato durante l'impostazione di questa proprietà è diverso da null e non è di tipo IList né di tipo IListSource.

Esempio

Nell'esempio di codice seguente viene illustrato l'uso della DataGridViewComboBoxColumn.DataSource proprietà , simile a questa proprietà. Questo esempio fa parte di un esempio più ampio disponibile nell'argomento di panoramica della DataGridViewComboBoxColumn classe.

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
};

Commenti

In genere questa proprietà viene impostata per un'intera colonna di celle tramite la DataGridViewComboBoxColumn.DataSource proprietà .

Se possibile, impostare su DataSource un'origine contenente solo le selezioni possibili, ad esempio una colonna di selezioni. DisplayMember La proprietà non deve quindi essere impostata. Tuttavia, se l'origine è più complessa, impostare DisplayMember sul nome della proprietà o della colonna da cui recuperare le selezioni possibili.

Se DataSource è impostato su una matrice di stringhe, ValueMember non è necessario impostare perché DisplayMember ogni stringa nella matrice verrà usata sia per il valore che per la visualizzazione.

Se si modifica la DataSource proprietà, la cella reinizializza la Items raccolta e si ridisegna.

Quando si modifica il valore della DataSource proprietà, il controllo tenta di utilizzare i valori delle ValueMember proprietà e DisplayMember con la nuova origine dati e imposta ogni proprietà su null se non è possibile trovare il relativo valore. Qualsiasi eccezione che si verifica durante questo processo viene ignorata a meno che non sia una delle eccezioni critiche seguenti: NullReferenceException, StackOverflowException, OutOfMemoryException, ExecutionEngineExceptionThreadAbortException, IndexOutOfRangeException, o AccessViolationException.

Quando l'oggetto DataSource è impostato, l'oggetto DataGridViewComboBoxCell viene collegato all'evento Disposed dell'origine dati. Quando l'oggetto DataGridViewComboBoxCellDataGridViewviene scollegato da , la risorsa non viene rilasciata immediatamente. La DataGridViewComboBoxCell risorsa viene rilasciata quando l'origine dati associata viene eliminata. Per rilasciare immediatamente la risorsa per Garbage Collection, impostare la DataSource proprietà su null.

Si applica a

Prodotto Versioni
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Vedi anche