簡體   English   中英

如何設置DataGridViewComboBox列的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM