Флажок в представлении таблицы данных не обновляет мой bindingList - PullRequest
0 голосов
/ 23 июня 2011

У меня есть таблица данных с 2 столбцами.Один - это флажок, а другой - обычная ячейка с текстовым полем.Все привязаны к одному BindingList, который является сущностью.

Если я отмечу один флажок, а затем зациклюсь, чтобы получить проверенные сущности из BindingList, он ничего не возвращает.Но если я проверяю, а затем редактирую столбец текстового поля, он работает нормально и возвращает один результат.

Я попытался обновить или проверить, а затем нажать в другом месте.Это не работает.

Как вам удается обновлять свой bindingList при проверке столбца?

Спасибо!

1 Ответ

1 голос
/ 23 июня 2011

Какой тип данных является столбцом в источнике данных (dataTable)? Это логический тип?

Но это не так важно, важно то, что вы используете правильное событие dgv. Использование: 1. CurrentCellDirtyStateChanged и 2. CellValueChanged

Это код, который вы должны использовать:

    private void CreateAndBind()
    {
        DataTable table = GetDataToDataTable();
        //then bind it to dgv:
        dgv.DataSource = new BindingSource(table, null);
        //create events for dgv:
        dgv.CurrentCellDirtyStateChanged += new EventHandler(dgv_CurrentCellDirtyStateChanged);
        dgv.CellValueChanged += new EventHandler(dgv_CellValueChanged);
    }

    private DataTable GetDataToDataTable()
    {
        //get data from dataBase, or what ever...   
        table.Columns.Add("column1", typeof(stirng));
        table.Columns.Add("column2", typeof(bool));

        //adding some exmaple rows:
        table.Rows.Add("item 1", true);
        table.Rows.Add("item 2", false);
        return table;
    }

    void dgv_CurrentCellDirtyStateChanged(object sender, EventArgs e)
    {
        if (dataGridView1.IsCurrentCellDirty)
            dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }

    private void dgv_CellValueChanged(object obj, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 0) //compare to checkBox column index
        {
            DataGridViewCheckBoxCell check = dataGridView1[0, e.RowIndex] as DataGridViewCheckBoxCell;
            if (Convert.ToBoolean(check.Value) == true)
            {
                //If tick is added!
                //
            }
        }
    }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...