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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> древовидное меню 
:(
    Опции темы
semi
Дата 16.5.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



привет
допустим следующую ситуацию: 
есть datagrid c 2-мя колнками. первая-кнопки, вторая-поле. по нажатию на кнопку должно открываться еще одно окно и в нем формироваться древовидное меню (с неизвесным уровнем вложенности. из бд) . 
пользователь выбирает определеную лист и нажмает "ок". в поле из второй колонки автоматичски появляется название выбраного листа . 

а теперь собствено вопросы smile
1. с чего начинать? smile)
2. меню нашла на js. оно статическое... можно ли вызваь из asp функцию js? (например чтобы в asp считывать данные из базы, а в js формировать ветвь?) (с js у меня плохо :( да и в asp я не  smile )
3. если делать чистый js, то как считать данные из базы?
4. Поможет ли технология ajax? smile 

 короче вопросов куча... главный - первый smile
PM MAIL ICQ   Вверх
Сарт
Дата 16.5.2007, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Если не стоит задача использовать javascript то я бы сделал так:
Заполнение грида.
В кнопке -работа с TreeView. (чтобы постоянно не висело- модификатор Visible).

Есть ли вариант лучше-не знаю, сам новичек=) Если нужно могу кинуть в личку статью, в которой описанно как работать с TreeView.(создание чего то наподобие Проводника). 


--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Mymik
Дата 17.5.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



semi, 
Цитата(semi @  16.5.2007,  21:20 Найти цитируемый пост)
1. с чего начинать? smile)

Я бы посоветовал с создания проекта. Это самый первый и самый верный путь.
Дальше у меня был бы вопрос.
Цитата(semi @  16.5.2007,  21:20 Найти цитируемый пост)
формироваться древовидное меню (с неизвесным уровнем вложенности. из бд) . 
пользователь выбирает определеную лист и нажмает "ок"

Какие элементы древовидного меню должны возвращать значения. А какие нет...

Цитата(semi @  16.5.2007,  21:20 Найти цитируемый пост)
2. меню нашла на js. оно статическое... можно ли вызваь из asp функцию js? (например чтобы в asp считывать данные из базы, а в js формировать ветвь?) (с js у меня плохо :( да и в asp я не  smile )

JS пишется в разделе <head></head> так что ты спокойно можешь туда засунуть твой скрипт. либо можешь через behind-code зарегестрировать скрипт (asp.net1.1 Page.RegisterClientScriptBlock, asp.net2.0 Page.ClientScript.RegisterClientScriptBlock).

Цитата(semi @  16.5.2007,  21:20 Найти цитируемый пост)
3. если делать чистый js, то как считать данные из базы?

JS не может обращаться к СУБД на сервере. Это клиентский язык. Так что меню нужно будет создавать на стороне сервера.

Цитата(semi @  16.5.2007,  21:20 Найти цитируемый пост)
4. Поможет ли технология ajax? smile 

Зачем вызывать столь громоздкие элементы. Когда все можно сделать гораздо проще.

Я наваял небольшой пример, как это все можно реализовать очень легко и просто. Без AJAX и с использованием обычного JS.
На первой странице у меня обычный DataGrid (кстати, в asp.net 2.0 рекомендуется использовать GridView. Но я сделал тебе с помощью DataGrid). И JS функция, которая создает окно.
Вторая страница, там у нас TreeView стоит и XmlDataSource. (я решил, что для наглядности примера, лучше использовать xml, а СУБД ты уже самсама прикрутишь). 
В открывшемся окне ты получаешь TreeView. если нажимаешь на ссылки, которые не имеют ChildNode'ов, то текст на который ты нажала оказывается в предыдущем окне. И после этого вспомогательное окно закрывает.

P.S. я снабдил комментарием код. Так что ты спокойно разберешься что там и к чему.
 

Это сообщение отредактировал(а) Mymik - 17.5.2007, 13:58

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  SmallHelp.rar 3,64 Kb


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Сарт
Дата 17.5.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вроде ж это девушка?=)
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Mymik
Дата 17.5.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



я нашел только одно место где обращение ошибочно... Что ж. Коль есть еще ошибки, просьба читать правильно и ссылаться на безграмотного автора :о).  smile 


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Сарт
Дата 17.5.2007, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile  smile 
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
semi
Дата 17.5.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



девушка, девушка  smile 

Цитата(Сарт @  16.5.2007,  22:25 Найти цитируемый пост)
В кнопке -работа с TreeView. (чтобы постоянно не висело- модификатор Visible).

Есть ли вариант лучше-не знаю, сам новичек=) Если нужно могу кинуть в личку статью, в которой описанно как работать с TreeView.(создание чего то наподобие Проводника). 


мне обязательно нужно использовать asp1... framework точнее... там разве поддерживается работа с TreeView?

Цитата(Mymik @  17.5.2007,  00:49 Найти цитируемый пост)

Какие элементы древовидного меню должны возвращать значения. А какие нет...


все должны иметь значение - ключ в таблице в базе... это что-то типа справочника. если я правильно поняла вопрос.

Цитата(Mymik @  17.5.2007,  00:49 Найти цитируемый пост)
JS пишется в разделе <head></head> так что ты спокойно можешь туда засунуть твой скрипт. либо можешь через behind-code зарегестрировать скрипт (asp.net1.1 Page.RegisterClientScriptBlock, asp.net2.0 Page.ClientScript.RegisterClientScriptBlock).


спасибо. посмотрим, попробуем.
Цитата(Mymik @  17.5.2007,  00:49 Найти цитируемый пост)

JS не может обращаться к СУБД на сервере. Это клиентский язык. Так что меню нужно будет создавать на стороне сервера.


подозрения были smile теперь я вэтом уверена smile))
Цитата(Mymik @  17.5.2007,  00:49 Найти цитируемый пост)
кстати, в asp.net 2.0 рекомендуется использовать GridView

учтем smile но у меня 1.1

этот код должен работать в 1.1? пока не запускается. вариантов два: либо я что-то неправильно делаю, либо оно не должно работать у меня в принципе :(
PM MAIL ICQ   Вверх
Mymik
Дата 17.5.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



Цитата(semi @  17.5.2007,  16:38 Найти цитируемый пост)
этот код должен работать в 1.1? пока не запускается. вариантов два: либо я что-то неправильно делаю, либо оно не должно работать у меня в принципе :( 

Вы угадали со вторым вариантом.

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

И все же. Какие узлы меню должны возвращать значение, а какие нет ???


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
semi
Дата 17.5.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



Цитата(Mymik @  17.5.2007,  16:58 Найти цитируемый пост)
но в принципе вам нужно самый минимум. Там две JS функции, которые вам нужные  есть. Так что от вас нужно только написать генерацию меню и разобравшись в том как оно генерируется просто подставить в нужные узлы JS код. Вот так вот.

ок. буду разбираться

Цитата(Mymik @  17.5.2007,  16:58 Найти цитируемый пост)

И все же. Какие узлы меню должны возвращать значение, а какие нет ???

хм... что вы понимаете под "узлы"?
у нас есть 
-
|
+-11111
|
- _ 22222
|    |
|    - 33333
|    |
|    - 44444
+ - 55555
...
button"ok" button "cancel"

11111,22222... имеют значения и возвращают их если любой из них выбран и нажато "ok". 
если "+" нажат первый раз в первом уровне (где 11111 и 55555), то он возвращает значение 11111, 55555,... в запросе к серверу...
соответственно все должны возвращать значения... только при различных условиях.
PM MAIL ICQ   Вверх
Mymik
Дата 17.5.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



Цитата(semi @  17.5.2007,  17:13 Найти цитируемый пост)
если "+" нажат первый раз в первом уровне (где 11111 и 55555), то он возвращает значение 11111, 55555,... в запросе к серверу...

я че-то не понял, он что, возвращает полностью все значения узлов из данного уровня ??? O_o ого. Круто. Только совсем непонятно... 
Ты точно не ошиблась ??? Если не ошиблась. То когда сгенерируешь таблицу, древовидное меню, дашь ссылочку. Я погляжу на меню. Помогу с JS. там надо будет пройтись во меню...


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
semi
Дата 17.5.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



Цитата(Mymik @  17.5.2007,  17:26 Найти цитируемый пост)

я че-то не понял, он что, возвращает полностью все значения узлов из данного уровня ??? O_o ого. Круто. Только совсем непонятно... 
Ты точно не ошиблась ??? Если не ошиблась. То когда сгенерируешь таблицу, древовидное меню, дашь ссылочку. Я погляжу на меню. Помогу с JS. там надо будет пройтись во меню... 


ткнул на плюс возле 11111 (11111 - текст. id у него например 1). к серверу идет запрос с параметром 1. сервер берет базу, считывает из нее всех "детей" поля с кодом 1 (если по хорошему, то и внуков с правнуками. я правда еще пока точно не представляю как это сделать). всех этих родственников в формат xml и назад к клиенту. клиент получает xml и автоматически формирует остальные узлы для 11111. 
я себе это так представляю... 
PM MAIL ICQ   Вверх
Mymik
Дата 17.5.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



semi,
Цитата(semi @  17.5.2007,  17:48 Найти цитируемый пост)
ткнул на плюс возле 11111 (11111 - текст. id у него например 1). к серверу идет запрос с параметром 1. сервер берет базу, считывает из нее всех "детей" поля с кодом 1 (если по хорошему, то и внуков с правнуками. я правда еще пока точно не представляю как это сделать). всех этих родственников в формат xml и назад к клиенту. клиент получает xml и автоматически формирует остальные узлы для 11111. 
я себе это так представляю...  

То что ты написала -- это AJAX. (если без перезагрузки страницы. А AJAX в asp.net 1.0 небыло. Так что тебе прийдется писать самой AJAX запросы... И при это тебе еще нужно передавать Update для ViewState'а... мне кажется туда лучше не соваться пока что) А если использовать PostBack... тогда это будет высшей степени нелогично. Так что лучше передавать полностью все меню пользователю и обрабатывать его сразу на стороне клиента с помощью JS.
Но в начале топика ты говорила о том, что ткнул на какой-то узел и он появился в TextBox предыдущей страницы. А точнее страницы, которая создала страницу с меню.



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
semi
Дата 17.5.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



Цитата(Mymik @  17.5.2007,  18:37 Найти цитируемый пост)
мне кажется туда лучше не соваться пока что


мне тоже так кажется smile я просто описала, как бы мне хотелось это видеть smile) на самом деле до этого еще ой как далеко :(


Цитата(Mymik @  17.5.2007,  18:37 Найти цитируемый пост)
Так что лучше передавать полностью все меню пользователю и обрабатывать его сразу на стороне клиента с помощью JS.

начать действительно стоит с этого...

Цитата(Mymik @  17.5.2007,  18:37 Найти цитируемый пост)
Но в начале топика ты говорила о том, что ткнул на какой-то узел и он появился в TextBox предыдущей страницы. А точнее страницы, которая создала страницу с меню.


ну да...  сложно передать данные в страницу, с которой открыли текущую?
PM MAIL ICQ   Вверх
Mymik
Дата 17.5.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



Цитата(semi @  17.5.2007,  20:00 Найти цитируемый пост)
ну да...  сложно передать данные в страницу, с которой открыли текущую? 

нет. Не сложно
Код

        /* обращение к предку */
        if(opener)
        {
            /* попытка найти в предке элемент */
            if(opener.document.getElementById(<ID элемента на предке>))
            {
                /* заполняем данными элемент в предке */
                opener.document.getElementById(<ID элемента на предке>).value = obj.innerHTML;
            }
        }



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
semi
Дата 17.5.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 10.12.2006
Где: ой, все сложно...

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



спасибо smile

но я еще с исходной страницей вожусь... не получается связать js и asp :(
я пыталась упростить код, который вы прислали (он у меня та и не заработал, но я думаю, что связь c js там нормально работает)

кнопка. по нажатию просто открыть окно... хотя бы без параметров. вот что не получается:
Код

<asp:Button OnClientClick='<%# "getPageWithData();" %>' Text="Set Data" runat="server" />

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

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

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


 




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


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

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