我試圖將DataSource設置爲DataGridView的DataGridViewComboBoxColumn。首先,我試圖將數據源綁定到我的DataGridView,在那裏的BindingList是我的自定義類插件具有屬性名稱(字符串),ID(字符串)和相關性(列表)的列表:將DataSource設置爲DataGridViewComboBoxColumn
var bindingList = PluginsHandler.GetPlugins();
var source = new BindingSource(bindingList, null);
pluginsDataGridView.AutoGenerateColumns = false;
pluginsDataGridView.DataSource = source;
pluginsDataGridView.Columns["pluginName"].DataPropertyName = "Name";
pluginsDataGridView.Columns["pluginID"].DataPropertyName = "Id";
所以我可以設置我的前兩列,但現在我想要將數據綁定到DataGridViewComboBoxColumn類型的第三列。我嘗試在DataBindingComplete事件上執行此操作:
private void pluginsDataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
for (int i = 0; i < pluginsDataGridView.Rows.Count; i++)
{
var comboCell = (DataGridViewComboBoxCell) pluginsDataGridView.Rows[i].Cells["pluginDependencies"];
var entry = pluginsDataGridView.Rows[i].DataBoundItem as IPlugin;
comboCell.DataSource = entry.Dependencies;
}
}
令人遺憾的是,comboBox爲空。有趣的事情發生在我錯誤地把這些行代碼的第一個塊我張貼後:
var dependenciesColumn = (DataGridViewComboBoxColumn) pluginsDataGridView.Columns["pluginDependencies"];
dependenciesColumn.DataPropertyName = "Dependencies";
然後結合似乎開始工作,我所看到的,有在組合框的條目,但是當我嘗試懸停鼠標在組合框上,我收到一個錯誤,說DataGridViewComboBoxCell值無效)。
我該如何讓它工作?
是的,Plugin類的Dependencies屬性是'List'。問題是我想在每一行中有不同的依賴關係列表,這就是爲什麼我要爲每個ComboCell分配一個數據源。 無論如何,即使我嘗試按照您呈現的方式執行此操作,例如: 'var dependenciesColumn =(DataGridViewComboBoxColumn)pluginsDataGridView.Columns [「pluginDependencies」]; dependenciesColumn.DataSource = new string [] {「test1」,「test2」}; dependenciesColumn.DataPropertyName =「Dependencies」;' 問題仍然是相同的,並且與此代碼我得到相同的錯誤。 –
krajol
我想我得到你的問題。在答案中看到我的編輯。 – Junaith