![]() |
|
Модераторы: gambit |
![]()
|
|
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Можно ли реализовать след задачу? Есть рисунок . На нем какие-то выноски к деталям (назовем так). Как выделить выноску на рисунке? И прочитать что выделено? Можно ли это сделать с помощью ImageMap?
|
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
kedicik, преобразование рисунка в текст. Это очень сложные и трудоемкие процессы. Алгоритмы дорого стоят. А реализация ихняя еще дороже. Стандартных функция распознавания текста из рисунка нет. Если где-нибудь найдешь бесплатную библию для распознавания текста -- поделись, мы все будем очень и очень благодарны столь щедрому подарку.
-------------------- |
|||
|
||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Я имела ввиду не распознавание текста. А если сделать на рисунке хот споты и выделять их. Мне без разницы текст или нет. Какие-то части на рисунке. Я это имела ввиду. Вот прочитала про ImageMap/ Там есть хот споты. Просто если это и возможно то если имедж идет их бд? Тогда на нем надо уже заранее проставить хот споты. Или вообще это не реализуется?
|
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
kedicik, Нет, ты ж всегда можешь определять RectangleHotSpot для своего ImageMap.
Сам по себе ImageMap должен иметь ссылку на картинку. Вот ты и забираешь картинку из СУБД. Ну и соответственно после этого ты можешь (если ты используешь GridView/DataGrid, Repeater или DataList) прикрепится к *DataBound и там подсовывать к этому ImageMap разные HotSpot
Конечно, было б классно хранить в отдельной таблице в базе тип HotSpot'а, ссылку куда он ведет, его разметку и ToolTip. типа по ID картинки забираешь из таблицы все данные для HotSpot'а и генерируешь их на ходу. Добавлено через 1 минуту и 7 секунд Да. Ну а если не используешь что-то типа GridView/DataGrid, Repeater или DataList Тогда ты можешь подсовывать прямо в Page_Load -------------------- |
|||
|
||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Все получилось Да я согласна! Хранить в бд координаты. Жалко что не выделяется хот спот при щелчке. Хорошо бы наложить на него как бы слой при щелчке. А при повторном удалить его. Типа прорисовать прямоугольник. Как нить можно?
|
|||
|
||||
| Mymik |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Если очень захотеть. То можно
JS Функция отвечающая за рисование прямоугольника. (Другие фигуры было очень лень рисовать)
А в behind-code добавляем вот так вот
-------------------- |
||||||
|
|||||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Спасибо попробую завтра на работе.
|
|||
|
||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
На открытие страницы сделала 2 хотспота. При клике по ним выводятся прямоугольники. При повторном они исчезают. Все правильно. Теперь мне нужно куда-нить сохранить какие споты у меня выделены. Мне нужно загнать в серверную лебел. Но я из джавы не вижу лебел. Может я не умею ее найти. Я могу найти только html inputtext/ туда я засылаю. Но я должна сделать его невидимым. Но после этого он у меня не может найтись в документе в джаве.
Добавлено через 3 минуты и 39 секунд я вообще джаву плохо знаю. Вообще в джаве можно обращаться к серверным контролам? напр лебелам? И интересна 1 вещь. На этом Image Map у меня еще 2 спота которые я создала обычным способом. После клика и высвечивания прямоуг клик по Image map не идет. Т есть по другим спотам ничего не работает Добавлено через 6 минут и 42 секунды или это влияет слой который наложился на мап? Добавлено через 9 минут и 17 секунд ну а вообще меня давно интересует союз джавы и visualbasic.net почему из джавы никак нельзя обновить какое-нибудь поле текстовое типа asp:Label |
|||
|
||||
| Mymik |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
kedicik, все можно спокойно найти. Просто открой код сгенерированной страницы и ты увидишь что там ID разные. И потом. В input записываются данные с помощью value. А в Label через innerHTML это разные объекты, у них разные свойства ;о). Чтобы найти объект, надо использовать document.getElementById('<ID контрола>'). Но эта <ID контрола> отличается от серверной (практически всегда) и потом в выходном потоке надо вписывать .ClientID серверного контрола. Вот описание Label
А вот так ты сможешь найти этот объект на клиенте
<%=lblTest.ClientID %> вписывает в выводном потоке клиентский ID твоего серверного контрола.
Ну-у-у... теоретически сервер и клиент разделены и недоступны. Только лишь с помощью элементов которые отправляют данные на сервер, они могут взаимодействовать. (ну это если ты не будешь писать сама писать пакеты запросов к серверу)
А как ты делаешь его невидимым ??? случайно не через Visible="false" ??? вообще-то это свойство убирает этот элемент из выходного потока... ну он генерируется, но в выходной поток данных он не поподает. Используй HiddenField или делай для своего TextBox display:none в стилях. Но первое лучше ;о). А что такое обычный способ ???
Все можно. Я описал выше. Но на сервере ты этих изменений не увидишь. Потому что Label не отправляет данные на сервер. Это просто статический текст обрамленный <span></span> и все. Постят данные на сервер только те контролы, которые обязаны это делать. -------------------- |
||||||||||||
|
|||||||||||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
А что такое обычный способ ???
Ну я имею ввиду что я создала 2 спота в конструкторе а не программно как вы мне написали. То есть есть2 спота с джавой и 2 спота обычных. Все 4 спота есть после загрузки страницы. Если я не кликаю по тем спотам где выводятся прямоугольники то по клику по мапу у меня нормально работают другие споты. Я получаю то что мне надо - иформацию по какому я кликнула (например координаты). Но как только я кликнула по джавским спотам и у меня появился прямоугольник, тогда те споты я не вижу и по клику у меня выводится - страница выводится с ошибкой-. ну это ладно . Поскольку нужны прямоугольники. И еще: а как отменить прямоугольник но чтобы тоже отловить это. Например по отрисовке прямоугольника я вывожу window.alert() а когда он становится невидимым то ?????? надо наверное новую джаву писать на это. 2 варианта - видимы и невидимый. Но я в джаве профан. Спасибо за инфу про обновление серверных полей. А я так долго мучилась с этим! Добавлено через 8 минут и 8 секунд Спасибо и жду ответов. Добавлено через 13 минут и 13 секунд Да на Input.text visible=false/ было. А брала из поля Value/ Но если даже засовывать инфу в asp:label то не произойдет отправка на сервер. Это понятно. А если в другой серверный элемент? Я тоже думаю что нет. И возбудить событие нельзя из джавы? я думаю что нет. |
|||
|
||||
| Mymik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Покажи как ты определила те два спота. Потому как у меня все работает. Прямоугольник не становится невидимым -- он удаляется из контента страницы. удаление прямоугольника стоит на событие onclick.
Вот этот код отвечает за удаление элемента со страницы. Вставь перед ним что тебе нужно, или вынеси в отдельную функцию.
красные квадраты не становятся видимыми или невидимыми. Они либо есть, либо нет. Ты можешь попросту отловить событие до создания рисунка. В функции drawRect можешь поставить свои условия и ответвления работы скрипта. Вот тут вот ход твоих мыслей я слабо очень понимаю... что ты хочешь ??? Создать какие-то данные с помощью JS и отправить с PostBack на сервер ??? ну так засунь эти данные в HiddenFiled, на клиенте это (<input type="hidden" />) это тот же <input type="text" /> только невидимый и он делает PostBack на сервер. Т.е. на сервере ты можешь обратится к контенту этого поля и взять из него данные, что были вписаны туда по средствами JS. Почему ж нельзя, конечно можно, с помощью Page.ClientScript.GetCallbackEventReference()(в asp.net 1.1 Page.GetPostBackClientEvent()) Причем вплоть до того, что можно не использовать asp.net AJAX RC1 а через эти методы использовать ajax (сам недавно узнал об этом). -------------------- |
||||
|
|||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Я поставила на них тип не NavigateUrl а забыла .......... на работе это.... postback ? и определила Target=_self. Когда кликаю по ним (но уже прямоугольник появился на других спотах) то внизу вижу ошиибку как раз что-то про Тarget. Ну тогда до понедельника если точно нужно |
|||
|
||||
| kedicik |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Вот посылаю Form1.aspx и Form1.aspx.vb/ Framework 2.0
Добавлено @ 18:04 Извините не знаю как правильно присоединить
Добавлено @ 18:10
Добавлено @ 18:12
Это сообщение отредактировал(а) Mymik - 21.5.2007, 20:53 Присоединённый файл ( Кол-во скачиваний: 2 )
code.txt 2,02 Kb |
||||||
|
|||||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Все таки обновление Label не работает. После отрисовки прм-ка меняется только Hidden и InputText/ а label не меняется.
После отрисовки прям-ка по клику на Hot1 Hot2 выдается ошибка Ошибка на странице jscript: "theForm._EVENTTARGET" есть NULL и не явл объектом |
|||
|
||||
| Mymik |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
kedicik, твой behind-code я вообще не смотрел. Я только смотрел только то что видим в aspx файле.
1) получение ссылок на DOM объект через document.all не поддерживается браузерами кроме IE(а нам ведь нужен код, который будет работать везде). Потому ее лучше заменять на document.getElementById. 2) В 10 и 11 строчках твоего xml файла (последняя вставка в виде xml) у элементов input есть атрибут runat="server" что делает их объектами HtmlControls. А следовательно их id (как и name) на клиенте отличаются от серверного. Потому общаться к ним надо
<%=Text1.ClientID %> -- преобразуют серверный ID в клиентский. 3) asp:Label на клиенте преобразуется в конструкцию <span></span> и чтобы записать текст в эту конструкцию, тебе нужно использовать прототип innerHTML. Этот прототип возвращает и устанавливает значение контента у данного DOM объекта. потому и изменять текст мы будем через
4)После того как ты нажимала на JS кнопки, которые рисовали квадратики, я как бы переписывал весь html... и из-за этого IE почему-то не хотело делать PostBack. Потому я пошел по другому пути и переписал это полностью на DOM модели. Ну и вобщем код страницы теперь выглядит вот так вот -->>
VB.NET я не сильно люблю, потому туда даже и не смотрел. Что касается работоспособности страницы -- теперь она работает во всех браузерах. Это сообщение отредактировал(а) Mymik - 21.5.2007, 21:36 -------------------- |
||||||
|
|||||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Ну хоть убейте меня но Label не выводит Num/ Я решила что я чего-то не понимаю !
А все остальное работает так как надо. Спасибо! |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
чего это Label не работает ??? работает... он выводит значение числа Num... все правильно там... у меня работает отлично...
-------------------- |
|||
|
||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Ну я не знаю почему. Как было у меня HELLO так и осталось. Ну может для меня это и не так важно но просто хочется понять!! и на будущее может понадобится. У меня explorer 6/0/ Отчего же может это зависеть....
|
|||
|
||||
| Mymik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
ты точно записываешь туда данные вот этой строкой
регистр букв соблюдала ??? (JavaScript регистрозависимый). Ковычки ставила ??? Смотри, у меня выглядит JS функция drawRect вот так вот
Это то что я отдавал тебе. когда ты срабатывает функция alert то значение в Label остается Hello. Как только доходит работа функции до последней строчки, так в Label появляется значение Num. Все работает как по мне. Или ты хочешь, чтобы измененное значение Label появилось на server-side ??? Label не делает PostBack данных. Так что ты не достучишься до измененного значениея Label на стороне сервера. Только лишь с помощью дополнительных элементов это можно сделать. -------------------- |
||||
|
|||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Сегодня все работает как надо. Все правильно. Я первым делом просмотрела регистр. Все соответствовало. Потом не долго мучаясь взяла и скопировала из ВАШЕГО примера . В общем все работает как часы. Какой-то глюк был. Большое спасибо за терпение и очень обстоятельные ответы. Все отлично.
|
|||
|
||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Ну спрошу еще одну вещь. Раз мы уж говорили на тему что Label не отправляет инфу серверу. На какое событие мне писать занесение результата в БД? На unload страницы? и брать результат из поля Hidden? У меня есть страница с radioButtonList Там я сразу при выборе одного из элементов сохраняю результат в БД. Но это серверный элемент и это возможно. А в этом случае? Как поступить?
Добавлено через 2 минуты и 53 секунды
Какие допол элементы? |
|||
|
||||
| Mymik |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
kedicik, В соседней теме обсуждалось как реализовать отправку данных (вызов события) на сервер. Ты же можешь не генерировать вызов этой функции, а написать ее сама, первый ее параметр будет строчка, а второй параметр подставляй значение Num.
Либо так как мы люди продвинутые и сейчас используется AJAX, но мы конечно же не хотим подключать эти сложные библиотеки и тому подобную фигню. Мы будем использовать наш старый добрый Page.ClientScript.GetCallbackEventReference(). Который нам сгенерирует скрипт AsyncPostBack'а. На страницы нам понадобится JS функция которая будет обрабатывать ответ с сервера
Я особо не заморачивался и написал маленькую функцию, которая просто вписывает значение в Label. На странице у меня аж целых три контрола
А самое интересное начинается в behind-code Во-первых для обработки AJAX'овых запросов, нам понадобится унаследоваться от интерфейса ICallbackEventHandler и реализовать два его метода RaiseCallbackEvent и GetCallbackResult Метод RaiseCallbackEvent вызывается при поподании запроса на сервер. Т.е. тут ты как раз и видишь те аргументы что пришли к тебе. Метод GetCallbackResult отвечает за отдачу строчки обратно пользователю. Т.е. как я представляю это себе -- первый метод для работы, второй метод для оповещения пользователя, что все супер. И так. в Behind-code у меня вот такой вот код
Вот собственно говоря и все. Это такой маленький экскурс в AJAX который тебе пригодится в поиске твоего решения. Для больший проектов такая генерация AJAX очень сложна и лучше подключать сборку asp.net ajax rc1. А для одиночного запроса подойдет и такое дело. Если же не хочешь использовать AJAX. То тебе всегда на помощь спешат HiddenFields, в которые ты сможешь записать данные из Label и они уже отпостят эти изменения на сервер. Вот так вот все просто... только тогда пользователя обязательно надо будет отправить на сервер... Это сообщение отредактировал(а) Mymik - 23.5.2007, 19:28 -------------------- |
||||||
|
|||||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Огромное спасибо! Все замечательно. А я так долго мучилась с этим. MyMik спасибо за обстоятельные ответы
|
|||
|
||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Сори.... это опять я. Соединила все наши изыскания вместе.
По клику по хотспоту рисую прямоугольник и загоняю Num в TextBox txtText (все делаю как ранее). На onChange Textbox стоит занесение текта в Label txtText.Attributes.Add("onchange", "DoCallBack(this.value, 0)") Если меняю текст в Textbox и перехожу на кнопку или щелкаю по форме (теряю фокус), то как и было ранее меняется Label. Но это работает когда вживую меняешь текст. Если же кликаешь по хотспоту то Label не меняется то есть onchange не возникает. Может txtText.Attributes.Add("onchange", "DoCallBack(this.value, 0)") поменять на что-то другое? Я думала по клику на спот загнать Num в txtText, и потом по изменению в txtText сохранить инф в БД. Получается я должна сделать : найти контрол Myhot1 (поскольку он динамический) и после этого Myhot1.Attributes.Add("onclick", "DoCallBack(this.value, 0)") Так ? |
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
kedicik, после того как ты записала данные в TextBox просто искусственно возбуди событие onchange().
P.S. настоятельно рекомендую начать ознакамливаться с DHTML или DOM level 0. ну и потихоньку до третьего уровня добраться. обращаться сюда это нормально и мы всегда рады тебе помочь, но слишком сильно тормозит производство окончательного продукта в виде сайта. -------------------- |
|||
|
||||
| kedicik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 12.4.2007 Репутация: нет Всего: нет |
Mymik, большое спасибо за все! Все получилось!
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |