DataGridViewComboBoxCell.DataSource Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia źródło danych, którego dane zawierają możliwe wybory wyświetlane na liście rozwijanej.
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
Wartość właściwości
Element IList lub IListSource zawierający kolekcję wartości używanych do dostarczania danych do listy rozwijanej. Wartość domyślna to null
.
Wyjątki
Określona wartość podczas ustawiania tej właściwości nie null
jest i nie jest typu IList ani IListSource.
Przykłady
Poniższy przykład kodu przedstawia użycie DataGridViewComboBoxColumn.DataSource właściwości podobnej do tej właściwości. Ten przykład jest częścią większego przykładu dostępnego DataGridViewComboBoxColumn w temacie przeglądu klasy.
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
Uwagi
Zazwyczaj ta właściwość jest ustawiana dla całej kolumny komórek za pośrednictwem DataGridViewComboBoxColumn.DataSource właściwości .
Jeśli to możliwe, ustaw DataSource źródło zawierające tylko możliwe opcje, takie jak kolumna zaznaczeń. DisplayMember Następnie właściwość nie musi być ustawiona. Jeśli jednak źródło jest bardziej skomplikowane, ustaw DisplayMember nazwę właściwości lub kolumny, z której mają zostać pobrane możliwe wybory.
Jeśli DataSource jest ustawiona na tablicę ciągów, nie ValueMemberDisplayMember trzeba ustawiać, ponieważ każdy ciąg w tablicy będzie używany zarówno dla wartości, jak i wyświetlania.
Zmiana właściwości powoduje, że komórka ponownie inicjuje DataSource swoją Items kolekcję i ponownie rysuje się.
Po zmianie wartości DataSource właściwości kontrolka próbuje użyć ValueMember wartości właściwości i DisplayMember z nowym źródłem danych i i ustawia każdą właściwość na null
wartość , jeśli nie można odnaleźć jej wartości. Każdy wyjątek występujący podczas tego procesu jest ignorowany, chyba że jest to jeden z następujących wyjątków krytycznych: NullReferenceException, , StackOverflowException, OutOfMemoryExceptionExecutionEngineExceptionThreadAbortException, , IndexOutOfRangeExceptionlub .AccessViolationException
Po ustawieniu parametru DataSourceDataGridViewComboBoxCell dołącza się do Disposed zdarzenia źródła danych.
DataGridViewComboBoxCell Gdy element jest odłączony od DataGridViewelementu , zasób nie jest natychmiast zwalniany. Zasób DataGridViewComboBoxCell jest zwalniany po usunięciu dołączonego źródła danych. Aby natychmiast zwolnić zasób do odzyskiwania pamięci, ustaw DataSource właściwość na null
.