powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DW.NET как получить имя заголовка столбца?
5 сообщений из 5, страница 1 из 1
DW.NET как получить имя заголовка столбца?
    #36184546
Всем здравствуйте!

DW.NET, style = Grid, требуется реализовать сортировку по столбцу, на заголовке которого пользователь сделал двойной клик. На "честном" РВ - знаю как сделать, никаких проблем не возникает, а вот на DW.NET...

Кто сталкивался, помогите, пожалуйста, ооочень нужно... Или дайте где можно почитать с примерами - чет никака найти не могу
...
Рейтинг: 0 / 0
DW.NET как получить имя заголовка столбца?
    #36185528
Dmitry..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а в dw.net нет событий?
...
Рейтинг: 0 / 0
DW.NET как получить имя заголовка столбца?
    #36185533
Dmitry..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
DW.NET как получить имя заголовка столбца?
    #36185702
Dmitry..а в dw.net нет событий?
Есть конечно! Но вот воспользоваться ими у меня пока что не особо получается...

в РВ все просто: в событии doubleclicked есть аргументы xpos, ypos, а так же, что самое главное и удобное, row и dwo. имея номер строки и dwo, по которому можно проанализировать dwo.name в котором будет либо имя столбца, если клик был в строке, либо имя заголовка, если клик был в заголовке, либо "datawindow", если клик был вне строки и заголовка. При этом если клие был не на строке, то аргумент row принимает значение 0. Дальше в коде я обрабатывал только имя заголовка и из него получал имя столбца и делал по нему сортировку (при соблюдении именования полей и заголовков, естествено).

В C#, к сожалению, я пока что, подобного сделать не могу. Тут мы имеем у DatawindowControl аж 2 события:
private void dwMyDW_DoubleClick(object sender, EventArgs e)
и
private void dwMyDW_MouseDoubleClick(object sender, MouseEventArgs e)

Ни в одном ни в другом в объекте e ничего подобного row и dwo не имеется.

Я пробовал пойти через получение dwMyDW.ObjectUnderMouse, но при этом где бы я не сделал даблклик в пределах DW, MessageBox.Show(dwMyDW.ObjectUnderMouse.ToString()); возвращает мне либо имя столбца (а не имя заголовка, если даблклик на заголовке), либо имя последнего столбца, на котором был сделан предыдущий даблкликю. Все. При этом в dwMyDW.ObjectUnderMouse.RowNumber возвращается текущая выбранная строка DW. Даже если клик был не на строке.

Dmitry..документация здесь:
http://sybooks.sybase.com/nav/summary.do?prod=10137〈=all&Submit.x=26&Submit.y=8&Submit=Submit&prodName=DataWindow+.NET&archive=0 Спасибо, я знаю эту ссылку, но т.к. не очень хорошо дружу с английским языком, ничего, что могло бы мне помочь (в данной ситуации) я найти не смог.
...
Рейтинг: 0 / 0
DW.NET как получить имя заголовка столбца?
    #36187900
Видимо, что то глючило в моем компьютере или в омей голове (что вероятнее)... Проблема решилась, и решилась, всетаки, через dwMyDW.ObjectUnderMouse...

Код получился вот такой:
Код: plaintext
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.
// переменные для запоминания последнего столбца, по которому делалась сортировка и порядка сортировки
public String sLastSortColumn = "";
public String sLastSortOrder = "";

        private void dwMyDW_DoubleClick(object sender, EventArgs e)
        {
            // сортировку делаем только для грида
            if (dwMyDW.Style != Sybase.DataWindow.DataWindowStyle.Grid) return;
            Sybase.DataWindow.GraphicObjectText dwo;
            String sDwoName = "";
            if (dwMyDW.ObjectUnderMouse.Band.Type == Sybase.DataWindow.BandType.Header)
            {
                dwo = (Sybase.DataWindow.GraphicObjectText)dwMyDW.ObjectUnderMouse.Gob;
                sDwoName = dwo.Name.Substring(dwo.Name.Length - 2, 2);
                if (sDwoName == "_t")
                {
                    sDwoName = dwo.Name.Substring(0, dwo.Name.Length - 2);
                    if (sDwoName == sLastSortColumn)
                    {
                        if (sLastSortOrder == "D" || sLastSortOrder == "")
                        {
                            sLastSortOrder = "A";
                        }
                        else
                        {
                            sLastSortOrder = "D";
                        };
                    }
                    else
                    {
                        sLastSortOrder = "A";
                    };
                    try
                    {
                        dwMyDW.SetSort(sDwoName + " " + sLastSortOrder);
                        dwMyDW.Sort();
                    }
                    finally { };
                    sLastSortColumn = sDwoName;
                };
            };
        }

// на ретриве переменные сбрасываем
        private void BaseDataWindowControl_BeginRetrieve(object sender, Sybase.DataWindow.BeginRetrieveEventArgs e)
        {
            sLastSortColumn = "";
            sLastSortOrder = "";
        }
Код, коенчно, не идеальный, но, вроде, работает...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DW.NET как получить имя заголовка столбца?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]