[英]How to set value to DataGridViewComboBox Column?
我想知道如何設置DataGridViewComboBox單元格的值。 我已經將DataGridViewComboBox與DataSource綁定在一起。 但是我想為這個數據源設置新值。
這是我到目前為止:
gvList.Rows[0].Cells[0].value = "Select";
但它拋出一個錯誤說: 格式異常:DataGridViewComboBox單元格值無效 。
我怎么能沒有錯誤地實現這個目標?
問題的根本原因是組合框值列表中不存在值“選擇”。 您需要將其添加到列的數據源,或者添加到單個單元的組合框的數據源(使用該單元的編輯控件)。
下面是關於設置我將要離開的所選項目的值的更多解釋,因為您可能會發現它很有用。
設置DataGridViewComboBoxColumn的值有兩種基本方法。 您可以使用數據綁定,也可以直接設置值。
聽起來你正試圖直接設置,所以我先解釋一下,然后在下面我將用數據綁定完成答案。
采取以下人為的例子:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
BindingList<User> users = new BindingList<User> { new User() { UserName = "Fred", userid = 2 } };
IList<MyValue> values = new List<MyValue> { new MyValue{id = 1, name="Fred"}, new MyValue{id = 2, name="Tom"}};
dataGridView1.DataSource = users;
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataSource = values;
col.DisplayMember = "name";
col.DataPropertyName = "userid";
col.ValueMember = "id";
dataGridView1.Columns.Add(col);
}
}
public class MyValue
{
public int id { get; set; }
public string name { get; set; }
}
public class User
{
public string UserName { get; set; }
public int userid {get;set;}
}
在這個例子中,我將ValueMember
屬性設置為“id”,它指的是我的ComboBox綁定到的列表中的屬性名稱id。
所以我需要做的就是以下內容(我確定我的行和單元格索引是正確的 - 你應該編寫代碼來檢查):
dataGridView1.Rows[0].Cells[2].Value = 1;
現在,在我的示例中,這是有效的,因為我的ValueMember
被設置為我的“id”屬性,這是一個整數,如果相反id是一個字符串屬性,我需要像這樣設置值:
dataGridView1.Rows[0].Cells[2].Value = "1";
(實際上只是嘗試了這個並且它使用隱式轉換進行管理)
當然,我想確保列表中的值實際為“1”。
以上幾行是導致錯誤的直接原因 - 將值提供給組合框的列表不包含值“Select”。
要使用數據綁定設置值,您需要告訴ComboBoxColumn它在DataGridView數據源中綁定的內容。
完成后,我將ComboBoxColumn的DataPropertyName設置為DataGridView綁定的類的屬性名稱。
有一種設置值的方法,但是如果設置了DataSource則不允許。
DataGridViewComboBoxCell cell =(DataGridViewComboBoxCell)gvList.Rows[0].Cells[0];
cell.Items[0] = "Select";
這對我有用
dim dt as datatable
dt=fillMydata() 'do your function
'dt has 2 col myId as myDescription
Dim col As DataGridViewComboBoxColumn
col = New DataGridViewComboBoxColumn
col.HeaderText = "MyHeader"
col.Name = "Myname"
col.DataSource = data '
col.DisplayMember = "myDescription"
col.ValueMember = "myId"
col.DropDownWidth = 240
''''''''''''''''''''''''''''''''''''''''''''''
'set the value
col.DefaultCellStyle.NullValue = dt.Rows(0).Item("myDescription").ToString
''''''''''''''''''''''''''''''''''''''''''''''
DataGridView1.Columns.Add(col)
希望這個幫助
該錯誤是由於您已將DataSource
綁定到ComboBox
列並且在分配Select時嘗試在DataSource
定位它也綁定了它。 您最好的選擇是將其添加到綁定到ComboBox
列的原始DataSource
嘗試添加活動
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.