Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress 2

Автор: JonyBes
Дата сообщения: 18.06.2007 16:04
Подскажите как программно нажать кнопку в ButtonEdit.
Автор: Dronton2
Дата сообщения: 18.06.2007 16:23
JonyBes
Сначала для кнопки создаётся событие OnButtonClick, например, myButtonPropertiesButtonClick. Теперь можно вызвать:

Код: myButtonPropertiesButtonClick(myButton, 0)
Автор: idmail
Дата сообщения: 18.06.2007 17:13
Надеюсь, тут можно задавать вопросы и по .NET...
1. Как сделать, чтоб xtraGrid изменял данные не пока запущена программа, а сразу писал изменения в базу? У меня к нему подключены TableAdapter и BindingSource.
2. Пользуюсь ломаной версией 6.3 Как в ней добавить новый отчет к проекту? У меня в меню Add new Item... нет айтема отчетов
Автор: int23
Дата сообщения: 19.06.2007 08:58
А скажите, кто-нить ставил Девок на Orcas? Поделитесь впечатлениями
Автор: raspe
Дата сообщения: 19.06.2007 11:22
idmail

Цитата:
Как сделать, чтоб xtraGrid изменял данные не пока запущена программа, а сразу писал изменения в базу? У меня к нему подключены TableAdapter и BindingSource


Не совсем понятно о чем речь


Цитата:
Пользуюсь ломаной версией 6.3 Как в ней добавить новый отчет к проекту? У меня в меню Add new Item... нет айтема отчетов


Добавь новый класс и отнаследуй его от XtraReport - студия тогда изменит иконку и появится дизайнер

Автор: idmail
Дата сообщения: 19.06.2007 11:55

Цитата:
Не совсем понятно о чем речь

Речь о том, что таблица работает внутри проекта и хранит данные временно, не сохраняя при этом в саму базу данных и при закрытии программы никакие изменения не сохраняются. Дак как сделать, чтоб сохранялись?

Цитата:
Добавь новый класс и отнаследуй его от XtraReport - студия тогда изменит иконку и появится дизайнер

Куда его добавить и где появится иконка, какая иконка, откуда запустить дизайнер?
Автор: raspe
Дата сообщения: 19.06.2007 13:19

Цитата:
Речь о том, что таблица работает внутри проекта и хранит данные временно, не сохраняя при этом в саму базу данных и при закрытии программы никакие изменения не сохраняются. Дак как сделать, чтоб сохранялись?


Так DevExpress то тут при чем? Но можно поступить так: кинь на форму контрол DataNavigator от DevExpress. Свойству DataSource dataNavigatorа присвой свой bindingSource. У dataNavigatora подвяжись к событию нажатия на кнопку. И там вставь прмерно такой код:

[c#]
private void dataNavigator1_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
{
if(e.Button.ButtonType == NavigatorButtonType.EndEdit)
{
Validate();
bindingSource.EndEdit();
tableAdapter.Update(table);

e.Handled = true;
}
}
[/c#]


Цитата:

Куда его добавить и где появится иконка, какая иконка, откуда запустить дизайнер?


К проекту добавь как обычно новый класс, этот класс наследуй от XtraReport, дальше студия все сделает сама
Автор: idmail
Дата сообщения: 19.06.2007 16:05

Цитата:
К проекту добавь как обычно новый класс, этот класс наследуй от XtraReport, дальше студия все сделает сама

Спасибо огромное, помогло, а т оя было уже отчаился.

Цитата:
Так DevExpress то тут при чем? Но можно поступить так: кинь на форму контрол DataNavigator от DevExpress. Свойству DataSource dataNavigatorа присвой свой bindingSource. У dataNavigatora подвяжись к событию нажатия на кнопку. И там вставь прмерно такой код:

Пробовал я делать нечто подобное - не помогает
Мне надо обновлять постоянно, как в дельфи гриды делают - сразу после изменения записи. Там есть эвент RowUpdate, надо использовать его, но метод Update не помогает
Автор: raspe
Дата сообщения: 19.06.2007 17:12
idmail

Цитата:
Мне надо обновлять постоянно, как в дельфи гриды делают - сразу после изменения записи

Кажется начинаю понимать, что тебе нужно. В общем 2 варианта:
1) нужно сохранять запись (если она была изменена), при переходе на другую запись. Тогда подписываемся на событие gridView RowUpdated

[c#]
gridView1.RowUpdated +=new DevExpress.XtraGrid.Views.Base.RowObjectEventHandler(gridView1_RowUpdated)
[/c#]

2) нужно сохранять запись сразу после изменения значения в ячейке грида. Тогда подписываемся уже на событие CellValueChanged

Но по хорошему, лучше подписаться на событие изменение не представления, а источника данных. Если это DataTable, то подписываемся на RowChanged, RowDeleted...

Думаю идея ясна
Автор: idmail
Дата сообщения: 19.06.2007 18:08
Ну я ведь и говорил, про RowUpdate а как по этому эвенету теперь сохранить?
TableAdapter.Update(e.Row); не катит
Автор: raspe
Дата сообщения: 19.06.2007 20:45
idmail
Я выше приводил код, как занести данные в БД
Автор: idmail
Дата сообщения: 19.06.2007 22:04

Код: private void gridView1_RowUpdated(object sender, RowObjectEventArgs e)
{
//System.Data.Common.DataAdapter da = null;
autoBindingSource.EndEdit();
autoTableAdapter.Update((DataRow)e.Row);
}
Автор: raspe
Дата сообщения: 20.06.2007 10:33
idmail
Так ты похоже при создании data source указал, что нужно присоединить файл базы данных к проекту - у тебя всякий раз при запуске проекта этот файлик копируется в выходную директорию и затирает все твои изменения. Пересоздай data source и откажись от включения файла в проект
Автор: idmail
Дата сообщения: 20.06.2007 11:05

Код: автотранспортTableAdapter.Update(tyreManagerDataBaseDataSet.Автотранспорт);
Автор: raspe
Дата сообщения: 20.06.2007 13:30
Сidmail
А в чем проблема. Есть мастер таблица, по ней строится mainView в гриде. Дальше жмешь retrieve details - получаешь уровни дочерних таблиц, привязываешь к уровням вьюшки, у вьюшек настраиваешь RowHeight. Все
Автор: idmail
Дата сообщения: 20.06.2007 14:03
У mainView есть поле, у которого высота 32, там imageComboBox с большими картинками. Дак вот теперь у вложенной таблицы высота стала тоже 32, как я уже сказал autoRowHeight выключено и высота выставлена ручками в 18, но она остается такой же
Автор: raspe
Дата сообщения: 20.06.2007 14:53
idmail
Как ты настроил высоту поля? Высота поля ставится по высоте строки, а она задается для каждой вьюшки отдельно! Чего-то ты не то делаешь
Автор: idmail
Дата сообщения: 20.06.2007 15:15
Попробуй - проверь. У маин грида сделай поле, где картинки высокие есть. А у дочернего ты просто не сможешь сделать высоту меньше.

Если сможешь - делай скрин, я его распечатаю и съем.

PS. картинки у меня в imageComboBox'ах
Автор: raspe
Дата сообщения: 20.06.2007 17:07
idmail
Ну все теперь понял о чем ты. Это баг(((
Автор: idmail
Дата сообщения: 20.06.2007 17:53
Да, печально, из-за этого немного кривовато выглядит.
А не подскажешь, как мне поменять конкретную ячейку в дочернем (это важно, потому-что в обычном - легко) гриде?
Ситуация такая: в дочернем гриде я сделал на редактирование колонки editButton (контрол с полем для ввода текста и кнопкой) хочу, чтоб по нажатию на кнопку открылась форма, я там что-то выбрал (радио группы) и какое-то значение записалось в эту ячейку.

Самое сложное - записать значение в нужную ячейку.
По нажатию на кнопку пытаюсь запомнить ячейку:

Код: gridView3.FocusedRowHandle, gridView3.FocusedColumn
Автор: raspe
Дата сообщения: 21.06.2007 10:01
idmail

Попробуй вот такой хинт, после выбора значения
[c#]
((GridView)gridControl1.FocusedView).FocusedRowHandle
[/c#]

должно помочь
Автор: HighTower
Дата сообщения: 21.06.2007 10:32
господа, подскажите, а как у девэкспресса с поддержкой уникода?
Автор: idmail
Дата сообщения: 21.06.2007 10:42
Спасибо, получить верные параметры колонки и строки удалось, но теперь не получается установить значение ячейки. (*в сердцах*)Да, что такое!

Пробовал кучу вариантов:

Код: ((GridView)gridControl2.ViewCollection[0]).SetRowCellValue(r, c, o);
gridView3..SetRowCellValue(r, c, o);
Автор: HighTower
Дата сообщения: 21.06.2007 11:06
idmail

Цитата:
Полный порядок.

всегда был или с какой то конкретной версии начался?
задача - ввод и отображение всяких разных языков, части символов которых нет в стандартной анси кодовой странице и есть только в расширенной юникоде...
Автор: raspe
Дата сообщения: 21.06.2007 11:27
idmail
Если работаешь с дочерними вьюшками, то обращаться напрямую к их объектам, созданным в дизайнере ты не можешь, так как при открытии дочернего View создается копия на основе шаблона (созданного в дизайнере)!

Поэтому нужно делать так: GridView childView = (GridView)gridControl.FocusedView;

и уже обращаешься к объекту childView. Например так:

childView.SetRowCellValue(childView.FocusedRowHandle, "ColumnName", value);
Автор: maxdddca123
Дата сообщения: 21.06.2007 12:06
Народ подскажите при установке DevExpr_17_nov_2006.exe при компиляции после установки вылезает куча ошибок Не удаётся найти указанный файл, причём сентябрьское обновление устанавливается номарьно. В чём может быть причина ?
Автор: raspe
Дата сообщения: 21.06.2007 12:23
maxdddca123
Одной из причин, может быть, то что ты скачал и установил DX для 2003 студии, а у тебя VS 2005 или Orcas
Автор: idmail
Дата сообщения: 21.06.2007 12:36

Цитата:
Поэтому нужно делать так: GridView childView = (GridView)gridControl.FocusedView;
и уже обращаешься к объекту childView. Например так:
childView.SetRowCellValue(childView.FocusedRowHandle, "ColumnName", value);


Код: GridView childView = (GridView)gridControl2.ViewCollection[0];
childView.SetRowCellValue(r, c, data);
Автор: maxdddca123
Дата сообщения: 21.06.2007 12:38
raspe
У меня BDS 2006.... Проблема именно в инсталле, поста распаковки там идёт компиляция (в самом инсталяторе, кто ставил тот поймёт)....
Автор: raspe
Дата сообщения: 21.06.2007 13:40
maxdddca123
Про Борланд ничего сказать не могу - не ставил(((
Может дело в том, что ты не снес старую версию полностью. Попробуй в GAC подчистить оставшиеся сборки, может поможет

idmail

Цитата:

Получить gridView так, как написал ты - невозможно, потому-что он в настоящий момент не в фокусе.

Тогда View и не создан еще, он ведь динамически создается по шаблону при отображении. Тогда пиши значение в источник данных, примерно так:

DataRow dr = childView.GetDataRow(rowHandle);
dr["ColumnName"] = value;


Цитата:

Как мне добавить туда один пустой айтем, чтоб плюсик стал доступным и можно было потом уже добавлять остальные или как его (плюс) просто сделать доступным и увидеть там пустую строку для добавления записей?


Отображение details настраивается в gridView.OptionsDetail; AllowExpandEmptyDetails - то что тебе нужно. Для новой строки крути gridView.OptionsView.NewItemRowPosition


Цитата:

В дочерней таблице меняется одно поле, как можно по его изменению поменять поле в родительской таблице.


Тут сам решай, можно через вью дочернего грида: gridView.SourceRowHandle и gridView.SourceView - укажут на строку и вью родителя. Но если вью не создан, то нужно как выше, изменять источник данных - получаешь DataRow дочерней таблицы и по ней выходишь на родителя через DataRow.GetParentRow. Как-то так

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.