DataGridView set column cell Combobox

后端 未结 8 2053
滥情空心
滥情空心 2020-12-05 19:36

I have tables like that in Datagridview:

 Name   Money
 -------------
 Hi      100   //here Combobox with member {10,30,80,100} to choose
 Ki      30    //he         


        
相关标签:
8条回答
  • 2020-12-05 19:51

    You can replace with

    dt.Columns.Add("Money", typeof(List<string>));
    
    0 讨论(0)
  • 2020-12-05 19:59

    You can do that very easily in the Visual Studio designer like this:

    1. Select (left click) the data grid view (DGV)
    2. In the properties of the DGV, click on the link "Edit columns". A dialog opens.
    3. Select the column you want to change to combobox in the "Selected Columns" list
    4. On the right hand side of the dialog, in "Unbound Column properties", "Design" section, find ColumnType property
    5. Change ColumnType property value to DataGridViewComboBoxColumn
    6. Save changes
    0 讨论(0)
  • 2020-12-05 20:01

    You could try the following:

    DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
    column.Name = "Money";
    column.DataSource = new string[] { "10", "30", "80", "100" };
    dataGridView1.Columns.Add(column);
    
    for (int row = 0; row < dataGridView1.Columns.Count; row++)
    {
       DataGridViewComboBoxCell cell = 
           (DataGridViewComboBoxCell)(dataGridView1.Rows[row].Cells["Money"]);
       cell.DataSource = new string[] { "80", "100" };
    }
    

    Or this:

    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)(row.Cells["Money"]);
        cell.DataSource = new string[] { "10", "30" };
    }
    
    0 讨论(0)
  • 2020-12-05 20:02

    I know it's late but Try this:

                DataTable dt = new DataTable();
                dt.Columns.Add("Name", typeof(String));
                dt.Columns.Add("Money", typeof(String));
                dt.Rows.Add(new object[] { "Hi", 100 });
                dt.Rows.Add(new object[] { "Ki", 30 });
    
                DataTable dt2 = new DataTable();
                dt2.Columns.Add("Money", typeof(String));
                dt2.Columns.Add("Meaning", typeof(String));
                dt2.Rows.Add(new object[] { "30" ,"Name 1" });
                dt2.Rows.Add(new object[] { "100", "Name 2" });
                dt2.Rows.Add(new object[] { "80", "Name 3" });
                dt2.Rows.Add(new object[] { "90", "Name4" });
    
                DataGridViewComboBoxColumn money = new DataGridViewComboBoxColumn();
    
                money.DataSource = dt2;
                money.HeaderText = "Money";
                money.DataPropertyName = "Money";
                money.DisplayMember = "Meaning";
                money.ValueMember = "Money";
    
                DataGridViewTextBoxColumn name = new DataGridViewTextBoxColumn();
                name.HeaderText = "Name";
                name.DataPropertyName = "Name";
    
                DGV.Columns.Add(money);
                DGV.Columns.Add(name);
                DGV.DataSource = dt;
    
    0 讨论(0)
  • 2020-12-05 20:05

    You were almost done.

    There are only two minor issues:

    1. In your table you are adding to rows "Money" value as integers, while in your column they are defined as string
    2. First add your table ad DataGridView DataSource, and then set column DataPropertyName

    Full code below:

    var table = new DataTable();
    table.Columns.Add("Name", typeof(string));
    table.Columns.Add("Money", typeof(string));
    table.Rows.Add("Hi", "100");
    table.Rows.Add("Ki", "30");
    
    var column = new DataGridViewComboBoxColumn();
    column.DataSource = new List<string>() { "10", "30", "80", "100" };            
    
    dataGridView1.Columns.Add(column);
    dataGridView1.DataSource = table;
    
    0 讨论(0)
  • 2020-12-05 20:07
    ((DataGridViewComboBoxColumn)dgvFacturas.Columns["estatus"]).DataSource = estatustemp.ToList();
    ((DataGridViewComboBoxColumn)dgvFacturas.Columns["estatus"]).ValueMember = "Key";
    ((DataGridViewComboBoxColumn)dgvFacturas.Columns["estatus"]).DisplayMember = "Value";
    
    0 讨论(0)
提交回复
热议问题