Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/160: Рейтинг темы: голосов - 160, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
1

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

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

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

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

Добавлено через 1 час 17 минут
прочитал что к ячейкам не попасть через gridcontrol,нужно через gridview, но там тоже не выходит как в dataGridView обратится через координаты [ , ] . Скажите пожалуйста как все таки можно так сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2013, 14:26
Ответы с готовыми решениями:

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

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

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

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

21
Кодогенератор
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
03.07.2013, 21:52 2
а что конкретно надо сделать?
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
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
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
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
04.07.2013, 07:53 5
Цитата Сообщение от ObiomoFF Посмотреть сообщение
нужно не индекс столбца, а сам столбец указывать
Да, либо столбец, либо название поля данных. Просто сам по аналогии с DataGridView написал.
Цитата Сообщение от ObiomoFF Посмотреть сообщение
на форме почему-то ничего не отображается. Из-за чего такое может быть?
Может быть из-за того, что в момент выполнения действий в GridView нет данных. Допустим, когда вызывается событие Form.Load, GridView еще пустой. Проверьте количество строк в момент обращения к значениям строки. Если оно равно 0, значит GridView еще не был инициализирован.
0
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 08:12  [ТС] 6
Ну, да в первый раз, когда я пытаюсь что-то добавить данных там еще нет. Я в программе открываю файл, и из него заполняю таблицу. Разве он не должен при добавлении данных сразу из отображать? или он не может что-то добавить и показать пока gridview пуст?
Может быть я как-то неправильно обращаюсь к gridview и надо не напрямую, а через gridcontrol?
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
04.07.2013, 08:30 7
Цитата Сообщение от ObiomoFF Посмотреть сообщение
надо не напрямую, а через gridcontrol?
Без разницы. Вы все равно будете обращаться к одному и тому же объекту.
Цитата Сообщение от ObiomoFF Посмотреть сообщение
Разве он не должен при добавлении данных сразу из отображать? или он не может что-то добавить и показать пока gridview пуст?
С этим вопросом лучше обращаться к разработчикам devexpress'а. Как сейчас показала практика, создание GridView и его привязка к источнику данных, происходят не одновременно. Возможно, в справке по GridView все подробно написано, но где находится эта справка, я пока что не знаю.
0
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
14 / 14 / 6
Регистрация: 17.10.2011
Сообщений: 48
04.07.2013, 10:12 9
C#
1
gridView1.GetRowCellValue(желаемый индекс строки, название столбца);
0
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 12:23  [ТС] 10
Разобрался как добавлять и редактировать, если кому интересно то вот ссылка:
http://documentation.devexpres... cument2389
Без внешнего датасорса, и еще нужно чтобы gridview был пуст, то есть не нужно самому добавлять и называть столбцы.
После этого можно использовать и gridView.GetRowCellValue и gridView.SetRowCellValue.

Из необходимого остался один вопрос - как можно скрыть строку?
gridView.Columns[0 /* индекс строки */].Visible = false;
скрывает столбец, а так же напрямую строки нельзя выбирать, там нет варианта Rows.
1
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
04.07.2013, 12:55 11
Цитата Сообщение от ObiomoFF Посмотреть сообщение
Разобрался как добавлять и редактировать, если кому интересно то вот ссылка:
http://documentation.devexpres... cument2389
Без внешнего датасорса, и еще нужно чтобы gridview был пуст, то есть не нужно самому добавлять и называть столбцы.
После этого можно использовать и gridView.GetRowCellValue и gridView.SetRowCellValue.

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

скрывает столбец, а так же напрямую строки нельзя выбирать, там нет варианта Rows.
Вам следует использовать фильтр, для сокрытия нужных строк.
0
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 13:05  [ТС] 12
Цитата Сообщение от Cupko Посмотреть сообщение
Вам следует использовать фильтр, для сокрытия нужных строк.
А можно, пожалуйста, поподробнее и желательно с примером кода?
Как запустить фильтр, который скрывает все строки, в которых отсутствует введенное слово?
0
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
04.07.2013, 13:11 13
Цитата Сообщение от ObiomoFF Посмотреть сообщение
А можно, пожалуйста, поподробнее и желательно с примером кода?
Как запустить фильтр, который скрывает все строки, в которых отсутствует введенное слово?
Можно немного поконкретнее? отсутствует запись в ячейке (т.е. null), пустая строка в ячейке, или же слово в предложении? значения с одного столбца или с разных?
0
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 13:27  [ТС] 14
присутствует ли слово в строке в определенной ячейке.
Например у меня есть текстбокс, я ввожу в него слово.
В таблице есть столбец с названием Name, и нужно скрыть все строки, где в Name не присутствует введенное слово. Проверял наличие с помощью функции Contains().
0
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
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
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 13:59  [ТС] 16
Большое спасибо, работает правильно. Удобная вещь, одной строчкой кода заменить 10-15.

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

На форме находятся 2 текстбокса и 2 чекбокса.
Первое поле должно сверяться с первым текстбоксом, как в примере выше, второе со вторым так же.
И два чекбокса, оба проверяют последний столбец, первый должен по включению/выключению показывать/скрывать все записи где в последнем столбце запись "X", а второй чекбокс тоже самое для записи "Y".
И чтобы все это работало одновременно.
0
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
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 по фильтрам, там на самом деле несколько способов, в т.ч. удобных для построения сложных фильтров. Я все возможности описать не смогу.
2
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
04.07.2013, 14:46  [ТС] 18
Огромное спасибо, повесил отдельный фильтр на каждый столбец, все работает.
0
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 22
08.07.2013, 14:06  [ТС] 19
Возник еще один вопрос:
Как настроить ширину столбцов? имеется ввиду не вручную через параметр width, а как нибудь автоматически.
В dataGridView был AutoSizeColumnsMode, может и здесь что-то подобное есть? чтобы столбцам с более длинными значениями клеток давалось больше места
0
14 / 14 / 6
Регистрация: 17.10.2011
Сообщений: 48
08.07.2013, 14:13 20
В голову приходит только одно
C#
1
GridView.ColumnAutoWidth
0
08.07.2013, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2013, 14:13
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru