Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование gridControl 
:(
    Опции темы
suomi
Дата 13.2.2009, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Ребят не получается у меня у  gridControl от devexpress строку перевести в режим редактирования, чтобы при нажатии на кнопку Редактирование в текущей строке курсор замигал и строка была уже готова к вводу нового значения. Делаю так:в обработке нажатия кнопки Редактирование пишу:
Код

private void iEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            DataRow dataRow = (partnerTypBindingSource.Current as DataRowView).Row;
             dataRow.BeginEdit();
        }

И просто ничего не происходит.
PM MAIL   Вверх
emmanuil
Дата 17.2.2009, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



Код

gridControl1.MainView.ShowEditor();
// или
gridView1.ShowEditor();

Цитата(suomi @  13.2.2009,  06:34 Найти цитируемый пост)
dataRow.BeginEdit()
Тут не элемент управления переходит в состояние редактирования, а объект DataRow.

PM MAIL   Вверх
suomi
Дата 17.2.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



emmanuil спасибо, вот теперь вопрос, когда элемент переходит в редактирование, а потом клавиатурой перемещаюсь на строку ниже редактирование остается, то есть курсор начинает мирцать и в след строке, то есть как сделать чтобы при перемещение по строкам редактирование прекратилось, что-то типа gridControl1.MainView.CloseEditor() но на какое событие его вешать ?
PM MAIL   Вверх
emmanuil
Дата 18.2.2009, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



Есть события:
gridView1.FocusedRowChanged // строка уже поменялась
gridView1.BeforeLeaveRow // перед тем как покинуть строку. когда покидаешь строку, изменения сохраняются автоматически!
gridView1.PostEditor(); // примет изменения, но не закроет редактор
gridView1.HideEditor(); // отклонит изменения и закроет редактор
gridView1.CloseEditor(); // примет изменения и закроет редактор
Так же проверяй e.RowHandle/e.FocusedRowHandle на >= 0.
Можно например так:
Код

        void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) {
            if (e.FocusedRowHandle >= 0 && gridView1.IsEditing)
                gridView1.HideEditor();
        }


Это сообщение отредактировал(а) emmanuil - 18.2.2009, 05:55
PM MAIL   Вверх
suomi
Дата 19.2.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Цитата

Так же проверяй e.RowHandle/e.FocusedRowHandle на >= 0.


Поясни, что дает эта проверка ?
PM MAIL   Вверх
suomi
Дата 19.2.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



emmanuil, сделал все как ты говорил, но при перемещении фокуса на другую строку курсор все равно мигает, то есть редактирование остается...
PM MAIL   Вверх
emmanuil
Дата 20.2.2009, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



Цитата(suomi @  19.2.2009,  10:54 Найти цитируемый пост)
ЦитатаТак же проверяй e.RowHandle/e.FocusedRowHandle на >= 0.Поясни, что дает эта проверка ?
У view FocusedRowHandle может быть отрицательным, например, когда фокус в строке фильтрации или в строке создания новой строки. Если пользушься девелоперскими компонентами, то должна быть и документация к ним, почитай, найдешь ответы на многие вопросы.
Цитата(suomi @  19.2.2009,  13:44 Найти цитируемый пост)
emmanuil, сделал все как ты говорил, но при перемещении фокуса на другую строку курсор все равно мигает, то есть редактирование остается...
Точно, сам проверил и остается. Это потому что при смене строки редактор закрывается, затем строка меняется, и только после редактор открывается снова, т.е. то событие происходит до того как редактор откроется. Покапался в свойствах и ничего не нашел. Вот может так пойдет, хотя этот способ мне не нравится.
Код

        private int rowHandle;

        public Form1() {
            InitializeComponent();
            gridControl1.DataSource = new object[] { 1, "asdasd", 123 };
            gridView1.FocusedRowChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventHandler(gridView1_FocusedRowChanged);
            gridView1.ShowingEditor += new CancelEventHandler(gridView1_ShowingEditor);
            gridView1.HiddenEditor += new EventHandler(gridView1_HiddenEditor);
        }

        void gridView1_HiddenEditor(object sender, EventArgs e) {
            rowHandle = gridView1.FocusedRowHandle;
        }

        void gridView1_ShowingEditor(object sender, CancelEventArgs e) {
            e.Cancel = rowHandle != gridView1.FocusedRowHandle;
            rowHandle = gridView1.FocusedRowHandle;
        }

        void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) {
            if (e.FocusedRowHandle >= 0) {
                if (rowHandle != e.PrevFocusedRowHandle)
                    rowHandle = e.FocusedRowHandle;
                else
                    rowHandle = e.PrevFocusedRowHandle;
            }
        }




PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0596 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.