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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JQuery и AJAX, При нажатии кнопки слетает jquery 
:(
    Опции темы
Ivankult
Дата 24.3.2012, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Добрый вечер. Замучился со связкой Jquery+AJAX на ASP. Возникла следующая проблема:
Есть страница Default.aspx,
На ней два Ajax-контрола:Меню и контент.
В первом из них-стайка div-ов, которые полностью управлятся jquery(расолзаются как аккордеон, подсвечиваются).
Необходимо, что бы при наведении на пункт меню отрисовывалась картинка во втором аякс-контроле.
Долго думал, как это сделать. Додумался до банального:

Код

$.post("Default.aspx",
            { client: "menu",
                method: "select",
                categoryid: $(this).attr('categoryid')
            });
.

Затем, на Default.aspx:
Код

protected void Page_Load(object sender, EventArgs e)
    {
            if (Request.Params["client"] != null)
            {
                if (Request.Params["method"].ToString() == "select")
                {
                    this.pageContent.LoadData(Request.Params["categoryid"].ToString());
                }                                
            }        
    }


И в pageContent:
Код

public void LoadData(string id)
    {
        Label1.Text = id;

        //UpdatePanel1.Update();        
    }


Фиддлером отлавливаю запрос, он проходит, брейкпоинтом ловлю вызов и отработку метода LoadData, но ничего визуально не меняется. Содержимое обоих контролов в UpdatePanel'ах. Что я делаю не так?

И второе. Вот полный код аккордеона:
Код

<script type="text/javascript">
    $(document).ready(function () {

        $('div[type="parent"]').hide();
        $('div[type="child"]').hide();

        $('div[type="primary"]').click(function () {
            $('div[type="parent"]').hide();
            $('div[type="child"]').hide();

            $('div[isactive="true"]').removeClass('active').removeAttr('isactive');

            $(this).addClass('active');
            $(this).attr("isactive", "true");

            $('div[parentid="' + $(this).attr("categoryid") + '"]').show();

        });

        $('div[type="parent"]').click(function () {
            $('div[type="child"]').hide();

            $('div[isactive="true"]').removeClass('active').removeAttr('isactive');

            $(this).addClass('active');
            $(this).attr("isactive", "true");

            $('div[parentid="' + $(this).attr("categoryid") + '"]').show();

        });

        $('div[type]').hover(function () {
            $(this).addClass('selected');

            $.post("Default.aspx",
            { client: "menu",
                method: "select",
                categoryid: $(this).attr('categoryid')
            });

           // alert("I'm Soldier");

        });

        $('div').mouseout(function () {
            $(this).removeClass('selected');
        });
    });

</script>


При нажатии на кнопку во втором аякс-контроле, аккордеон раскрывается и все атрибуты isactive слетают. Почему?

И главный вопрос:может, я думаю в совершенно неверном направлении и jquery здесь никуда не упал? Как поставленную задачу решить правильно?

Заранее благодарю.
--------------------
Стив Макконнелл: «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете».
PM MAIL ICQ   Вверх
1stain
Дата 1.4.2012, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По поводу первого вопроса: или реализовать свои web controls с поддержкой ASP.NET Ajax (например, как здесь: Adding Client Capabilities to a Web Server Control), или добавить в код статический метод, который звать ajax'ом из javascript'а и в котором выдавать url для картинки, которую надо обновить. Затем, в обработчике success метода jQuery.post менять src картинки в контенте на возвращаемый сервером.

По поводу второго вопроса - если меню контрол не кидает постбэков, то самый простой вариант - обернуть его в UpdatePanel с UpdateMethod="Conditional"


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

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

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

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


 




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


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

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