Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2

Модерирует : ShIvADeSt

ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, начало тут
 

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:16 29-01-2007 | Исправлено: VitaliM, 15:47 24-11-2008
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
idmail
 
Попробуй вот такой хинт, после выбора значения  
[c#]
((GridView)gridControl1.FocusedView).FocusedRowHandle
[/c#]
 
должно помочь

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 11:01 21-06-2007
HighTower



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
господа, подскажите, а как у девэкспресса с поддержкой уникода?

----------
Бог у всех один, провайдеры - разные.

Всего записей: 998 | Зарегистр. 09-08-2001 | Отправлено: 11:32 21-06-2007
idmail

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, получить верные параметры колонки и строки удалось, но теперь не получается установить значение ячейки. (*в сердцах*)Да, что такое!
 
Пробовал кучу вариантов:

Код:
((GridView)gridControl2.ViewCollection[0]).SetRowCellValue(r, c, o);
gridView3..SetRowCellValue(r, c, o);

И другие... ну не выставляет значение и все тут
 
 
Добавлено:

Цитата:
господа, подскажите, а как у девэкспресса с поддержкой уникода?

Полный порядок.

Всего записей: 32 | Зарегистр. 14-12-2006 | Отправлено: 11:42 21-06-2007 | Исправлено: idmail, 11:43 21-06-2007
HighTower



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
idmail

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

всегда был или с какой то конкретной версии начался?
задача - ввод и отображение всяких разных языков, части символов которых нет в стандартной анси кодовой странице и есть только в расширенной юникоде...

----------
Бог у всех один, провайдеры - разные.

Всего записей: 998 | Зарегистр. 09-08-2001 | Отправлено: 12:06 21-06-2007
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
idmail
Если работаешь с дочерними вьюшками, то обращаться напрямую к их объектам, созданным в дизайнере ты не можешь, так как при открытии дочернего View создается копия на основе шаблона (созданного в дизайнере)!
 
Поэтому нужно делать так: GridView childView = (GridView)gridControl.FocusedView;
 
и уже обращаешься к объекту childView. Например так:  
 
childView.SetRowCellValue(childView.FocusedRowHandle, "ColumnName", value);

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 12:27 21-06-2007
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ подскажите при установке DevExpr_17_nov_2006.exe при компиляции после установки вылезает куча ошибок Не удаётся найти указанный файл, причём сентябрьское обновление устанавливается номарьно. В чём может быть причина ?

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 13:06 21-06-2007
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxdddca123
Одной из причин, может быть, то что ты скачал и установил DX для 2003 студии, а у тебя VS 2005 или Orcas

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 13:23 21-06-2007
idmail

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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


Код:
            GridView childView = (GridView)gridControl2.ViewCollection[0];
            childView.SetRowCellValue(r, c, data);

Делаю вот так. Параметры r и c точно верные. Получить gridView так, как написал ты - невозможно, потому-что он в настоящий момент не в фокусе.
По нажатию на кнопку в ячейки, про которую я писал выше, у меня открывается форма, в ней я выбираю какие-то данные и их мне надо записать в ячейку, а не получается (
 
У меня есть еще два не сложных вопроса.
У меня одна таблица вложена в другую, как я уже говорил. При добавлении новой записи в главную таблицу у нее нет дочерних записей и плюсик (показать дочернюю) становиться недоступным. Как мне добавить туда один пустой айтем, чтоб плюсик стал доступным и можно было потом уже добавлять остальные или как его (плюс) просто сделать доступным и увидеть там пустую строку для добавления записей?
Метод AddNewRow не принимает никаких параметров, потому в дочерней таблице может и появляется строка, но она не привязана к главной и я не вижу ее
 
В дочерней таблице меняется одно поле, как можно по его изменению поменять поле в родительской таблице. Опять не могу найти как выставить поле на нужное и понять на какое поменяли в дочерней

Всего записей: 32 | Зарегистр. 14-12-2006 | Отправлено: 13:36 21-06-2007
maxdddca123

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
raspe
У меня BDS 2006.... Проблема именно в инсталле, поста распаковки там идёт компиляция (в самом инсталяторе, кто ставил тот поймёт)....

Всего записей: 211 | Зарегистр. 14-12-2006 | Отправлено: 13:38 21-06-2007
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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. Как-то так

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 14:40 21-06-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maxdddca123
Уже июньская версия есть. Ссылку см. в шапке.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 15:26 21-06-2007
idmail

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
            GridView childView = (GridView)gridControl2.ViewCollection[0];
            //DataRow dr = (DataRow)childView.GetRow(r);
            DataRow dr = childView.GetDataRow(r);
            dr["Ось"] = data;//data - строка

childView получает верное значение, r == нужной строке, а вот во второй строке dr==null И никак не инициализируется Как быть?
 

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

Отлично, помогло.

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

У меня просто нормально не определяет гриды

Код:
             
            GridView childView = (GridView)gridControl2.ViewCollection[0];
            DataRow dr = childView.GetDataRow(e.RowHandle);
            DataRow pdr = dr.GetParentRow(new DataRelation("", new                        DataColumn("Местоположение"), new DataColumn("Куда")));
 
            GridView parentView = (GridView)gridControl2.ViewCollection[1];
            //parenView.SetRowCellValue(, c, data);

 
Много разных вариантов пробовал - не получается
Здесь DataRow тоже не инициализируется. Пожалуйста, помоги разрешить вопрос. У меня времени до завтра осталось... эх :\
 
Добавлено:
Проблема только в том, что грид вложенный. Не могу никак к нему доступ получить
 
 
Добавлено:
raspe, и еще... мы обсуждали отчеты. Я создал класс, унаследованный от DevExpress.XtraReports.UI.XtraReport, сохранил. В солюшн эксплорере открыл его дизайнер. С помощью визарда кинул простейшую таблицу, но отчет не читает данные из датасета.
Все сделал как на демки сайта ДевЭкспресс и перепроверил, но в очтете появляются только колонки, а поля не загружаются
 
Добавлено:
Отчеты поборол. А вот с гридом - никак

Всего записей: 32 | Зарегистр. 14-12-2006 | Отправлено: 16:30 21-06-2007
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
idmail
Чего-то я запутался. Опиши проблему подробней. У тебя есть mainView. Тебе нужно достучаться к дочерней view. Или наоборот?
 
На сколько я понял, у тебя второй вариант от дочерней вью, нужно к родительской строке. Так? В общем давай подробней, что имеешь и что нужно получить
 
Добавлено:
Кажется я понял твой косяк, у тебя ChildView уже закрыт и ты пытаешься получать child DataRow? Это неправильно!!!!! Получить DataRow, RowHandle и все что связано с данными ты можешь только тогда, когда открыт соответстующий view. Тот view что ты используешь - шаблонный - в нем нет никаких данных!!!! Тебе нужно в том месте, где ты обрабатываешь изменение дочерней строки после выбора значения в диалоге (обработчик нажатия кнопки в editButton), получать DataRow дочерней строки (или родительской) и уже там ее изменять или сохранять ссылку, если изменение будет позже
 

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 18:44 21-06-2007
idmail

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот скрин: http://img517.imageshack.us/img517/332/gwtmscrez1.jpg
 
Вопросы:
1. В поле "Ось" editButton. По нажатию на кнопку у меня открывается форма, в которой я что-то выбираю, нажимаю "Применить" и что-то должно записаться в строку.
 
Делаю следующим образом:
Запоминаю строку. (Только как ее грамотно запомнить?)
Переопределяю конструктор новой формы и передаю строку туда, чтоб в дальнейшем использовать.
После нажатия "Применить" возвращуюсь в главную форму и выставляю значение. Выставить его не получается, потому-что грид внутренний не доступен. Код я приводли выше.
 
2. Необходимо при изменении поля Куда, не важно какой записи менять у главной таблицы поле местоположение. Это совсем не понятно как сделать
 
Ну незнаю куда подробней. Читай личные сообщения.

Всего записей: 32 | Зарегистр. 14-12-2006 | Отправлено: 19:20 21-06-2007
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
idmail
По поводу первого вопроса. Тебе ведь нужно из формы вернуть строку и записать ее в ячейку? Тогда я бы сделал так
 
[c#]
 
// Обработчик нажатия кнопки
private void buttonEdit_ButtonClick(Args e)
{
   using(MyForm frm = new MyForm())
   {
          frm.ShowDialog();
          GridView gv = (GridView)gridControl.FocusedView;
          gv.SetRowCellValue (gv.FocusedRowHandle, "Ось", frm.MyString);              
    }          
}
 
 
// Код формы, где вводится строка
// в ней textBox и кнопка Ok
public class MyForm : Form
{
    public string MyString
     {
          get { return textBox1.Text; }
     }
 
    public void button1_Click()
    {
       this.Close();
    }
}
 
[/c#]
 
 
2) Для изменения родительской записи, после изменения дочерней нужно подписаться на событие CellValueChanged в дочернем гриде
 
Код примерно будет такой:
 
[c#]
 private void childView_CellValueChanged(e)  
{  
     if(e.Column == "Куда")  // Тут сам найди какое сво-во отвечает за имя колонки
     {
     ((DataRowView)gridControl.FocusedView.SourceRow)["Местоположение"]   = e.Value;
     }
}  
[/c#]
 
Примерно так

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 20:49 21-06-2007
idmail

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
raspe, супер. Просто огромное тебе спасибо, незнаю как еще отблагодарить.
Мучался с этим 3 дня, а ты вот так все быстро решил.

Всего записей: 32 | Зарегистр. 14-12-2006 | Отправлено: 22:41 21-06-2007
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
idmail
Кстати, по поводу высоты строк я прогнал - никакой это не баг. Вот цитата разработчиков
 

Цитата:
 
The grid row height cannot be set to a value less than the minimum row height. The minimum height is calculated from the grid and column font size and minimum heights of column in-place editors.
 

 
В общем заведи еще один Imagе collection маленького размера, присвой эту коллекцию изображений свойству SmallImages imageComboBox-а

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 09:50 22-06-2007
idmail

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
raspe, спасибо еще раз - помогло
 
Добавлено:
С гридом разобрались, теперь очередь отчетов
По ним два вопроса:
1. Как вставлять формулу, в которой будут считаться данные из разных таблиц? Где вводить саму формулу?
2. Мне необходимо на всех страницах, кроме первой, выводить определенный текст, как сделать так, чтоб на первой его не было?

Всего записей: 32 | Зарегистр. 14-12-2006 | Отправлено: 11:29 22-06-2007
idmail

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И еще... мне необходимо отобразить одну таблицу, которая связана с другой. В дочерней таблицы хранится номер записи из главной таблицы для связи.
Как мне зная этот номер отобразить нужное поле, нужной записи из главной талицы?

Всего записей: 32 | Зарегистр. 14-12-2006 | Отправлено: 18:10 23-06-2007
SerjP75

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А может просто взять нормальный генератор отчетов? Например FastReport

Всего записей: 18 | Зарегистр. 17-02-2006 | Отправлено: 07:26 25-06-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2
ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru