WinForm DevExpress Xtragrid программно для проверки указанного столбца флажка в представлении сетки

Объяснение:

У меня есть представление сетки, которое содержит столбцы RepositoryItemCheckEdit и столбцы RepositoryItemTextEdit, представление сетки содержит такие столбцы, как Item Id, Bar code, Pack Id и т. д.

1)RepositoryItemCheckEdit

Одни и те же Item Id и bar code могут иметь несколько элементов в представлении сетки с разными pack id.

Что мне нужно, так это то, что если пользователь выбирает какой-либо флажок идентификатора элемента в представлении сетки, это означает, что мне нужно, чтобы все связанные строки флажков были отмечены или сняты наоборот. Пользователь может установить либо первый флажок, либо последний флажок, после чего соответствующий флажок должен быть установлен или снят, наоборот, в зависимости от выбора пользователя.

2)RepositoryItemTextEdit

То же, что и флажок «Редактирование столбца», «Редактирование текста».

 void repchkCheckbox_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
    {
                DataTable dt_check = new DataTable();
                dt_check = (DataTable)gcItemMaster.DataSource;
                Int64 sItemId = Convert.ToInt64(gvItemMaster.GetRowCellValue(gvItemMaster.FocusedRowHandle, gvItemMaster.Columns["ItemID"]));
                bool bDiscount = Convert.ToBoolean(e.Value);
                int iItemcount = (from DataRow row in dt_check.Rows where (string)row["ItemID"] == "1" select row).Count();
                int iRowHandle = gvItemMaster.FocusedRowHandle;
                for (int i = 0; i < iItemcount; i++)
                {
                    if (bDiscount)
                        gvItemMaster.SetRowCellValue(iRowHandle, gvItemMaster.Columns["AllowDiscount"], true);
                    else
                        gvItemMaster.SetRowCellValue(iRowHandle, gvItemMaster.Columns["AllowDiscount"], false);

                    iRowHandle++;
                }
         }

Иллюстративная цель: если я содержит 5 строк в представлении сетки с одинаковым идентификатором элемента, но с другим идентификатором пакета... если я отмечаю самый первый флажок строки элемента, это означает, что я могу легко заполнить оставшиеся флажки, такие как 2-й, 3-й, 4-й, 5-й, путем увеличения значения дескриптора строки. Но Мой вопрос заключается в том, если я проверяю 3 строки флажка элемента gridview Itemid, это означает, что я могу заполнить только 4-ю и 5-ю строку состояния флажка... но 1-я и 2-я строки остаются прежними...


person Pradeep    schedule 31.10.2014    source источник
comment
Итак, что вы пробовали до сих пор? Любые усилия? С какими проблемами вы столкнулись?   -  person Andy Korneyev    schedule 31.10.2014
comment
Извините, я не вижу никакой объясненной проблемы, с которой вы столкнулись при реализации этого.   -  person Renatas M.    schedule 31.10.2014


Ответы (2)


У вас есть поле в таблице данных для представления проверенного состояния?

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

person Jan Hyde    schedule 31.10.2014

Я нашел решение, оно отлично работает:

                     Int64 iItemId = Convert.ToInt64(gvItemMaster.GetRowCellValue(e.RowHandle, "ItemID"));
                     bool bDiscount = Convert.ToBoolean(e.Value);

                for (int i = 0; i < gvItemMaster.DataRowCount; i++)
                {
                    Int64 id = Convert.ToInt64(gvItemMaster.GetRowCellValue(i, "ItemID"));
                    if (id == iItemId)
                    {
                        if (bDiscount)
                            gvItemMaster.SetRowCellValue(i, gvItemMaster.Columns[""+sColumn.Replace(" ","")+""], true);
                        else
                            gvItemMaster.SetRowCellValue(i, gvItemMaster.Columns[""+sColumn.Replace(" ","")+""], false);
                    }
                }   
person Pradeep    schedule 01.11.2014