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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор выноски на рисунке 
:(
    Опции темы
kedicik
Дата 22.5.2007, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну хоть убейте меня но Label не выводит Num/ Я решила что я чего-то не понимаю ! 
А все остальное работает так как надо.  Спасибо!
PM MAIL   Вверх
Mymik
Дата 22.5.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



чего это Label не работает ??? работает... он выводит значение числа Num... все правильно там... у меня работает отлично... 


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

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


Бывалый
*


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

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



Ну я не знаю почему. Как было у меня HELLO так и осталось. Ну может для меня это и не так важно но просто хочется понять!! и на будущее может понадобится.  У меня explorer 6/0/ Отчего же может это зависеть....
PM MAIL   Вверх
Mymik
Дата 23.5.2007, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



ты точно записываешь туда данные вот этой строкой 
Код

document.getElementById('<%=lblTest.ClientID%>').innerHTML = Num;

регистр букв соблюдала ??? (JavaScript регистрозависимый). Ковычки ставила ???
Смотри, у меня выглядит JS функция drawRect вот так вот
Код

        function drawRect(Num,x, y, w, h, im)
        {
            var s = 1;/* размер бордюра */
            var lbl;
            this.setDiv(x, y, w, h, s, im);
            alert(Num);
            
            document.getElementById('<%=Text1.ClientID %>').value = Num;
            document.getElementById('<%=Hidden1.ClientID %>').value = Num;
            document.getElementById('<%=lblTest.ClientID%>').innerHTML = Num;
        } 

Это то что я отдавал тебе. когда ты срабатывает функция alert то значение в Label остается Hello. Как только доходит работа функции до последней строчки, так в Label появляется значение Num. Все работает как по мне.
Или ты хочешь, чтобы измененное значение Label появилось на server-side ??? Label не делает PostBack данных. Так что ты не достучишься до измененного значениея Label на стороне сервера. Только лишь с помощью дополнительных элементов это можно сделать.


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

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


Бывалый
*


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

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



Сегодня все работает как надо. Все правильно. Я первым делом просмотрела регистр. Все соответствовало. Потом не долго мучаясь взяла и скопировала из ВАШЕГО примера . В общем все работает как часы. Какой-то глюк был. Большое спасибо за терпение и очень обстоятельные ответы. Все отлично.
PM MAIL   Вверх
kedicik
Дата 23.5.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну спрошу еще одну вещь. Раз мы уж говорили на тему что Label не отправляет инфу серверу. На какое событие мне писать занесение результата  в БД?  На unload страницы? и брать результат из поля Hidden? У меня есть страница с radioButtonList Там я сразу при выборе одного из элементов сохраняю результат в БД. Но это серверный элемент и это возможно. А в этом случае? Как поступить?

Добавлено через 2 минуты и 53 секунды
Цитата(kedicik @ 23.5.2007,  12:16)
Так что ты не достучишься до измененного значениея Label на стороне сервера. Только лишь с помощью дополнительных элементов это можно сделать.

Какие допол элементы?
PM MAIL   Вверх
Mymik
Дата 23.5.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



kedicik, В соседней теме обсуждалось как реализовать отправку данных (вызов события) на сервер. Ты же можешь не генерировать вызов этой функции, а написать ее сама, первый ее параметр будет строчка, а второй параметр подставляй значение Num.
Либо так как мы люди продвинутые и сейчас используется AJAX, но мы конечно же не хотим подключать эти сложные библиотеки и тому подобную фигню. Мы будем использовать наш старый добрый Page.ClientScript.GetCallbackEventReference(). Который нам сгенерирует скрипт AsyncPostBack'а.
На страницы нам понадобится JS функция которая будет обрабатывать ответ с сервера
Код

    function ClientCallbackFunction(args, ctx)
    {
        document.getElementById('<%=lblTest.ClientID %>').innerHTML = args;
    }

Я особо не заморачивался и написал маленькую функцию, которая  просто вписывает значение в Label.
На странице у меня аж целых три контрола
Код

<%--- Кнопка тут сделана для отвода глаз... на самом деле она ничего не делает как видно из функции подвешеной на клиентский клик. ---%>
<asp:TextBox ID="txtTest" runat="server" /> <asp:Button ID="btnTest" OnClientClick="return!1;" runat="server" /><br/>
<asp:Label ID="lblTest" runat="server" />

А самое интересное начинается в behind-code
Во-первых для обработки AJAX'овых запросов, нам понадобится унаследоваться от интерфейса ICallbackEventHandler и реализовать два его метода RaiseCallbackEvent и GetCallbackResult
Метод RaiseCallbackEvent вызывается при поподании запроса на сервер. Т.е. тут ты как раз и видишь те аргументы что пришли к тебе.
Метод GetCallbackResult отвечает за отдачу строчки обратно пользователю.
Т.е. как я представляю это себе -- первый метод для работы, второй метод для оповещения пользователя, что все супер. smile 

И так. в Behind-code у меня вот такой вот код
Код

public partial class Default3 : System.Web.UI.Page, ICallbackEventHandler
{
    /* просто временное хранилище */
    public string args;
    protected void Page_Load(object sender, EventArgs e)
    {
        /* Не зарегестрирован-ли уже клиентский скрипт :о)  */
        if (!Page.ClientScript.IsClientScriptBlockRegistered("asyncScript"))
        {
            /* Генерация скрипта для работы AJAX запросов. если последний аргумент false то это будет обычный PostBack */
            string asyncScript = Page.ClientScript.GetCallbackEventReference(this, "args", "ClientCallbackFunction", "ctx", true);
            /* это обертка в функцию для более удобного пользования */
            System.Text.StringBuilder script = new System.Text.StringBuilder();
            script.Append("function DoCallBack(args, ctx){");
            script.Append(asyncScript);
            script.Append("}");
            /* Регистрация скрипта */
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "asyncScript", script.ToString(), true);
        }
        /* 
            Подключение обертки на событие изменения данных в TextBox (замечу, 
            что это событие сработает только лишь после того как форма потеряет 
            фокус, а не по во время изменения данных в форме) 
        */
        txtTest.Attributes.Add("onchange", "DoCallBack(this.value, 0)");

    }
    /* Два метода из интерфейса */
    public void RaiseCallbackEvent(string eventArgument)
    {
        /* Вот тут вот ты можешь спокойно записывать нужные тебе данные в СУБД и возвращать все что тебе хочется */
        args = eventArgument;
    }
    public string GetCallbackResult()
    {
        /* А тут ты уже отдаешь результат пользователю */
        return args;
    }
}

Вот собственно говоря и все. Это такой маленький экскурс в AJAX который тебе пригодится в поиске твоего решения. Для больший проектов такая генерация AJAX очень сложна и лучше подключать сборку asp.net ajax rc1. А для одиночного запроса подойдет и такое дело.

Если же не хочешь использовать AJAX.
То тебе всегда на помощь спешат HiddenFields, в которые ты сможешь записать данные из Label и они уже отпостят эти изменения на сервер. Вот так вот все просто... только тогда пользователя обязательно надо будет отправить на сервер...

Это сообщение отредактировал(а) Mymik - 23.5.2007, 19:28


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

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


Бывалый
*


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

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



Огромное спасибо! Все замечательно. А я так долго мучилась с этим. MyMik спасибо за обстоятельные ответы
PM MAIL   Вверх
kedicik
Дата 25.5.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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)")
Так ?
PM MAIL   Вверх
Mymik
Дата 25.5.2007, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



kedicik, после того как ты записала данные в TextBox просто искусственно возбуди событие onchange().
Код

myTextBox = document.getElementById('<%=textBoxId.ClientID %>');
myTextBox.value = Num;
myTextBox.onchange();


P.S. настоятельно рекомендую начать ознакамливаться с DHTML или DOM level 0. ну и потихоньку до третьего уровня добраться.
обращаться сюда это нормально и мы всегда рады тебе помочь, но слишком сильно тормозит производство окончательного продукта в виде сайта.



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

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


Бывалый
*


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

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



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

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

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

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


 




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


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

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