Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/63: Рейтинг темы: голосов - 63, средняя оценка - 4.54
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
1

Как работает GridControl (DevExpress)?

03.07.2013, 14:26. Просмотров 11717. Ответов 21
Метки нет (Все метки)

Здравствуйте, объясните пожалуйста, как работает Gridcontrol (devexpress)?
Добавил в редакторе столбцы, из программы нужно добавить строчку и заполнить её, но не получается перейти к ячейкам как в dataGridView. Так же нужно будет скрыть часть строк, как получить доступ к параметру видимость строки?

Заранее спасибо.

Добавлено через 1 час 17 минут
прочитал что к ячейкам не попасть через gridcontrol,нужно через gridview, но там тоже не выходит как в dataGridView обратится через координаты [ , ] . Скажите пожалуйста как все таки можно так сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 14:26
Ответы с готовыми решениями:

Как отловить событие сортировки GridControl.GridView devexpress
Вопрос простой - есть форма. На ней гридконтрол. В гридконтроле один гридвью....

Devexpress GridControl число строк
Всем привет. Не нашел статью, где написано сколько строк показывает таблица...

DevExpress. Выбрать строку в GridControl програмно
Уважаемые. Подскажите пожалуйста сабж. Обрыскал инет, но не нашёл прямого...

DevExpress. Добавление записей из буфера обмена в gridControl
Здравствуйте, У меня проблема том, что скопированные данные из excel в...

DevExpress GridControl (GridView): при попытке ввести значение в таблицу, оно исчезает
Здравствуйте! Начал осваивать DevExpress. Сейчас необходимо научиться...

21
hepper
Кодогенератор
198 / 198 / 51
Регистрация: 15.06.2011
Сообщений: 794
Завершенные тесты: 3
03.07.2013, 21:52 2
а что конкретно надо сделать?
0
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
04.07.2013, 05:42 3
ObiomoFF, Я надеюсь, что вы уже знаете, как получить GridView из GridControl'а. Поэтому сразу к озвученным тут вопросам:
1.
Цитата Сообщение от ObiomoFF Посмотреть сообщение
перейти к ячейка
C#
1
2
gridView.GetRowCellValue(0 /* индекс строки */, 0 /* индекс столбца */); // Получить значение ячейки
gridView.SetRowCellValue(0 /* индекс строки */, 0 /* индекс столбца */, 0 /* новое значение ячейки */); // Задать значение ячейки
Цитата Сообщение от ObiomoFF Посмотреть сообщение
не выходит как в dataGridView обратится через координаты [ , ]
И не выйдет, потому что это не DataGridView и не его наследник. Если хотите, можете попробовать наследоваться от GridView и создать в наследнике индексаторы для доступа к ячейкам. В оригинале такого функционала нет.
2.
Цитата Сообщение от ObiomoFF Посмотреть сообщение
как получить доступ к параметру видимость строки?
C#
1
gridView.Columns[0 /* индекс строки */].Visible = false;
2
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 06:37  [ТС] 4
Вроде бы все как вы написали, но только нужно не индекс столбца, а сам столбец указывать, иначе ругается.
C#
1
2
gridView1.AddNewRow();
gridView1.SetRowCellValue(i, gridView1.Columns[0], i + 1);
Все срабатывает без ошибок, но на форме почему-то ничего не отображается. Из-за чего такое может быть?
0
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
04.07.2013, 07:53 5
Цитата Сообщение от ObiomoFF Посмотреть сообщение
нужно не индекс столбца, а сам столбец указывать
Да, либо столбец, либо название поля данных. Просто сам по аналогии с DataGridView написал.
Цитата Сообщение от ObiomoFF Посмотреть сообщение
на форме почему-то ничего не отображается. Из-за чего такое может быть?
Может быть из-за того, что в момент выполнения действий в GridView нет данных. Допустим, когда вызывается событие Form.Load, GridView еще пустой. Проверьте количество строк в момент обращения к значениям строки. Если оно равно 0, значит GridView еще не был инициализирован.
0
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 08:12  [ТС] 6
Ну, да в первый раз, когда я пытаюсь что-то добавить данных там еще нет. Я в программе открываю файл, и из него заполняю таблицу. Разве он не должен при добавлении данных сразу из отображать? или он не может что-то добавить и показать пока gridview пуст?
Может быть я как-то неправильно обращаюсь к gridview и надо не напрямую, а через gridcontrol?
0
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
04.07.2013, 08:30 7
Цитата Сообщение от ObiomoFF Посмотреть сообщение
надо не напрямую, а через gridcontrol?
Без разницы. Вы все равно будете обращаться к одному и тому же объекту.
Цитата Сообщение от ObiomoFF Посмотреть сообщение
Разве он не должен при добавлении данных сразу из отображать? или он не может что-то добавить и показать пока gridview пуст?
С этим вопросом лучше обращаться к разработчикам devexpress'а. Как сейчас показала практика, создание GridView и его привязка к источнику данных, происходят не одновременно. Возможно, в справке по GridView все подробно написано, но где находится эта справка, я пока что не знаю.
0
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 09:41  [ТС] 8
Обратил внимание, что даже просто добавить строку не получается.
на другом форуме прочитал, что ему для работы нужен datasource, а добавление строки делает
Use the AddNewRow method to add a new record(row) to the View's underlying data source
, то есть добавляет строку в источник данных, а раз источника данных нет, то и добавлять некуда.
0
duduev.muhammed
13 / 13 / 6
Регистрация: 17.10.2011
Сообщений: 48
04.07.2013, 10:12 9
C#
1
gridView1.GetRowCellValue(желаемый индекс строки, название столбца);
0
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 12:23  [ТС] 10
Разобрался как добавлять и редактировать, если кому интересно то вот ссылка:
http://documentation.devexpress.com/#WindowsForms/CustomDocument2389
Без внешнего датасорса, и еще нужно чтобы gridview был пуст, то есть не нужно самому добавлять и называть столбцы.
После этого можно использовать и gridView.GetRowCellValue и gridView.SetRowCellValue.

Из необходимого остался один вопрос - как можно скрыть строку?
gridView.Columns[0 /* индекс строки */].Visible = false;
скрывает столбец, а так же напрямую строки нельзя выбирать, там нет варианта Rows.
1
Cupko
446 / 436 / 124
Регистрация: 17.07.2012
Сообщений: 1,305
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 12:55 11
Цитата Сообщение от ObiomoFF Посмотреть сообщение
Разобрался как добавлять и редактировать, если кому интересно то вот ссылка:
http://documentation.devexpress.com/#WindowsForms/CustomDocument2389
Без внешнего датасорса, и еще нужно чтобы gridview был пуст, то есть не нужно самому добавлять и называть столбцы.
После этого можно использовать и gridView.GetRowCellValue и gridView.SetRowCellValue.

Из необходимого остался один вопрос - как можно скрыть строку?

скрывает столбец, а так же напрямую строки нельзя выбирать, там нет варианта Rows.
Вам следует использовать фильтр, для сокрытия нужных строк.
0
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 13:05  [ТС] 12
Цитата Сообщение от Cupko Посмотреть сообщение
Вам следует использовать фильтр, для сокрытия нужных строк.
А можно, пожалуйста, поподробнее и желательно с примером кода?
Как запустить фильтр, который скрывает все строки, в которых отсутствует введенное слово?
0
Cupko
446 / 436 / 124
Регистрация: 17.07.2012
Сообщений: 1,305
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 13:11 13
Цитата Сообщение от ObiomoFF Посмотреть сообщение
А можно, пожалуйста, поподробнее и желательно с примером кода?
Как запустить фильтр, который скрывает все строки, в которых отсутствует введенное слово?
Можно немного поконкретнее? отсутствует запись в ячейке (т.е. null), пустая строка в ячейке, или же слово в предложении? значения с одного столбца или с разных?
0
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 13:27  [ТС] 14
присутствует ли слово в строке в определенной ячейке.
Например у меня есть текстбокс, я ввожу в него слово.
В таблице есть столбец с названием Name, и нужно скрыть все строки, где в Name не присутствует введенное слово. Проверял наличие с помощью функции Contains().
0
Cupko
446 / 436 / 124
Регистрация: 17.07.2012
Сообщений: 1,305
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 13:30 15
Цитата Сообщение от ObiomoFF Посмотреть сообщение
присутствует ли слово в строке в определенной ячейке.
Например у меня есть текстбокс, я ввожу в него слово.
В таблице есть столбец с названием Name, и нужно скрыть все строки, где в Name не присутствует введенное слово. Проверял наличие с помощью функции Contains().
C#
1
view.ActiveFilterString = "[Name] like '%ваше_слово%'";
ну или конкретно:
C#
1
view.ActiveFilterString = String.Format("[Name] like '%{0}%'", textBox.Text);
1
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 13:59  [ТС] 16
Большое спасибо, работает правильно. Удобная вещь, одной строчкой кода заменить 10-15.

Я не продумал один момент, если применить другой фильтр, первый перестает учитываться. Подскажи пожалуйста, как сделать фильтр на такой случай:

На форме находятся 2 текстбокса и 2 чекбокса.
Первое поле должно сверяться с первым текстбоксом, как в примере выше, второе со вторым так же.
И два чекбокса, оба проверяют последний столбец, первый должен по включению/выключению показывать/скрывать все записи где в последнем столбце запись "X", а второй чекбокс тоже самое для записи "Y".
И чтобы все это работало одновременно.
0
Cupko
446 / 436 / 124
Регистрация: 17.07.2012
Сообщений: 1,305
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 14:12 17
Цитата Сообщение от ObiomoFF Посмотреть сообщение
Большое спасибо, работает правильно. Удобная вещь, одной строчкой кода заменить 10-15.

Я не продумал один момент, если применить другой фильтр, первый перестает учитываться. Подскажи пожалуйста, как сделать фильтр на такой случай:

На форме находятся 2 текстбокса и 2 чекбокса.
Первое поле должно сверяться с первым текстбоксом, как в примере выше, второе со вторым так же.
И два чекбокса, оба проверяют последний столбец, первый должен по включению/выключению показывать/скрывать все записи где в последнем столбце запись "X", а второй чекбокс тоже самое для записи "Y".
И чтобы все это работало одновременно.
Можно вешать фильтры на отдельные столбцы, например:
C#
1
2
3
4
                    mainView.Columns["Distributor"].FilterInfo =
                        new DevExpress.XtraGrid.Columns.ColumnFilterInfo("[Distributor] = 1");
                    mainView.Columns["Customer"].FilterInfo =
                        new DevExpress.XtraGrid.Columns.ColumnFilterInfo("[Customer] = 1");
а можно использовать несколько фильтров в view.ActiveFilterString
C#
1
mainView.ActiveFilterString = "[Distributor] = 1 and [Customer] = 1"
Ну и соответственно в различных положениях, либо очищать фильтр для отдельной колонки:
C#
1
mainView.Columns["Customer"].ClearFilter();
либо удалять подстроку из строки.

Вам стоит почитать документацию DevExpress по фильтрам, там на самом деле несколько способов, в т.ч. удобных для построения сложных фильтров. Я все возможности описать не смогу.
1
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 14:46  [ТС] 18
Огромное спасибо, повесил отдельный фильтр на каждый столбец, все работает.
0
ObiomoFF
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
08.07.2013, 14:06  [ТС] 19
Возник еще один вопрос:
Как настроить ширину столбцов? имеется ввиду не вручную через параметр width, а как нибудь автоматически.
В dataGridView был AutoSizeColumnsMode, может и здесь что-то подобное есть? чтобы столбцам с более длинными значениями клеток давалось больше места
0
duduev.muhammed
13 / 13 / 6
Регистрация: 17.10.2011
Сообщений: 48
08.07.2013, 14:13 20
В голову приходит только одно
C#
1
GridView.ColumnAutoWidth
0
08.07.2013, 14:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2013, 14:13

В Devexpress GridControl нужно, чтобы style format condition не применялся при печати грида
В общем-то прочитал много документации, но такого не нашел. С помощью style...

Передать данные с gridControl одной формы на gridControl другой формы
Господа помогите пожалуйста не могу разобраться с передачей данных с...

gridControl DevExpress
Здравствуйте, скажите, пожалуйста, как сделать в gridControl возможность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru