Skip to content

Default value for DataGridViewCheckBoxComboBoxColumn #1

@ccko

Description

@ccko

Hi ,

I want set default cell value in grid.
but part of cell's value is empty, please see below code
thanks.

` private ListSelectionWrapper wrappedList;
public Form1()
{
InitializeComponent();

        var dt = new DataTable();
        dt.Columns.Add("Text", typeof(string));


        var dataSource = new List<Data>();
        dataSource.Add(new Data() { Text = "Sunday, Monday" });
        dataSource.Add(new Data() { Text = "Tuesday" });
        dataSource.Add(new Data() { Text = "Thursday" });


        foreach (var obj in dataSource)
        {
            var row = dt.NewRow();

            row.ItemArray = new object[] { obj.Text };

            dt.Rows.Add(row);
        }

        //var bindingList = new BindingList<Data>(dataSource);
        //var source = new BindingSource(bindingList, null);

        dataGridView1.AutoGenerateColumns = true;
        var txtCol = new DataGridViewTextBoxColumn();
        txtCol.Name = "Text";
        txtCol.HeaderText = "Text";
        txtCol.ReadOnly = true;
        txtCol.DataPropertyName = "Text";
        dataGridView1.Columns.Add(txtCol);

        List<Status> statuses = new List<Status>();
        statuses.Add(new Status() { Name = "Sunday" });
        statuses.Add(new Status() { Name = "Monday" });
        statuses.Add(new Status() { Name = "Tuesday" });
        statuses.Add(new Status() { Name = "Wednesday" });
        statuses.Add(new Status() { Name = "Thursday" });
        statuses.Add(new Status() { Name = "Friday" });
        statuses.Add(new Status() { Name = "Saturday" });
        var comboboxColumn = new DataGridViewCheckBoxComboBoxColumn();

        wrappedList = new ListSelectionWrapper<Object>(statuses);
        wrappedList.TextSeparator = comboboxColumn.TextSeparator;

        comboboxColumn.DataSource = wrappedList;
        comboboxColumn.ValueMember = "Selected";
        comboboxColumn.DisplayMemberSingleItem = "Name";
        comboboxColumn.DisplayMember = "NameConcatenated";
        comboboxColumn.Name = "Status";
        dataGridView1.Columns.Add(comboboxColumn);

        
        dataGridView1.DataSource = dt;

    }

    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        var grid = (DataGridView)sender;
        try
        {
            var cell = grid.Rows[e.RowIndex].Cells["Text"];
            var cellValue = Convert.ToString(cell.Value);
            //var cellValue = Convert.ToString((dataGridView1.DataSource as DataTable).Rows[e.RowIndex]["Text"]);

            if (!string.IsNullOrEmpty(cellValue))
            {
                var rss = (from name in cellValue.Split(',')
                           select new KeyValuePair<string, object>(
                               name,
                               new ObjectSelectionWrapper<Object>(new Status() { Name = name.Trim() }, this.wrappedList))
                               ).ToDictionary(t => t.Key, t => t.Value);

                var testCell = dataGridView1.Rows[e.RowIndex].Cells["Status"] as
                     PresentationControls.DataGridViewCheckBoxComboBoxColumn.DataGridViewCheckBoxComboBoxCell;

                testCell.Value = rss;
            }
        }
        catch
        {

        }
    }`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions