Repeater ItemCommand не работает при ссылке на страницу

РЕДАКТИРОВАТЬ: я нашел причину проблемы, но я не знаю, почему, и я не знаю, как это исправить. Я использую JQuery Mobile для темы своего сайта, и когда я удаляю эту строку:

<div data-role="page" data-theme="a">

Я могу заставить репитер работать правильно. Кто-нибудь знает, как я могу сохранить свою тему и заставить этот репитер работать?

Хорошо, у меня есть репитер, как это:

<asp:Repeater ID="Repeater1" runat="server" onitemcommand="Repeater1_ItemCommand" EnableViewState="true">
 <ItemTemplate>
    <li>
        <asp:LinkButton ID="Button1" runat="server" Text='<%# Container.DataItem %>' CommandName="Redirect" />
    </li>
 </ItemTemplate>
</asp:Repeater>

И код за этим выглядит так

 protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "Redirect")
        {
            Session["contact"] = ((LinkButton)e.CommandSource).Text;
            Response.Redirect("Contact_Details.aspx");
        }
    }

И если я перейду прямо на эту страницу (без ссылки на нее с другой страницы), повторитель запустит ItemCommand. Но, если моя страница входа перенаправляется обратно на эту страницу или я просто нажимаю ссылку на эту страницу с другой страницы, команда itemcommand никогда не срабатывает при нажатии на кнопки ссылки. Любые подсказки относительно того, почему это так?

РЕДАКТИРОВАТЬ: Полный код для этой страницы:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="Contacts.aspx.cs" Inherits="WebApplication3.Contacts" %>
<%@ MasterType VirtualPath = "~/Site1.Master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<asp:Repeater ID="Repeater1" runat="server" onitemcommand="Repeater1_ItemCommand" EnableViewState="true">
<HeaderTemplate> <ul data-role='listview' data-theme='c' data-inset='true'>
    <li data-role="list-divider"><center><h1>Contacts</h1></center></li></HeaderTemplate>
 <ItemTemplate>
    <li>
        <asp:LinkButton ID="Button1" runat="server" Text='<%# Container.DataItem %>' CommandName="Redirect" />
    </li>
 </ItemTemplate>
 <FooterTemplate></ul></FooterTemplate>
</asp:Repeater>

</asp:Content>

При загрузке страницы я подключаюсь к веб-сервису, который подключается к обмену и возвращает массив. Я делаю быстрое преобразование массива в массив, тогда остальная часть кода:

//Converts the array grabbed from the webservice to an arraylist
 ArrayList testList = ArrayList.Adapter(contactsList);


            Repeater1.DataSource = testList;
            Repeater1.DataBind();

        Repeater1.ItemCommand += new RepeaterCommandEventHandler(Repeater1_ItemCommand);
    }

person Novacane    schedule 20.03.2012    source источник
comment
На странице должна быть основная ошибка JavaScript. Запускали ли вы профилировщик для сканирования любых возникающих ошибок? Или у вас есть код в PageLoad, который может останавливать выполнение? Нам нужно увидеть остальную часть кода.   -  person msigman    schedule 20.03.2012
comment
Отредактировал исходный пост. У меня нет ошибок на странице. Мой вопрос будет заключаться в том, почему это работает, когда я ввожу URL-адрес этой страницы в свой браузер, но не работает, когда другая страница с моего сайта ссылается на нее или перенаправляет на нее?   -  person Novacane    schedule 20.03.2012
comment
Происходит ли обратная передача, когда вы нажимаете на кнопку ссылки?   -  person PraveenVenu    schedule 20.03.2012
comment
Ничего не происходит, когда я нажимаю кнопку. Он вообще не распознает, что кнопка была нажата. Кроме того, я попытался переписать это как представление списка, и он делает то же самое. Работает нормально, если вы вводите URL-адрес непосредственно в браузер, но если вы нажмете ссылку на страницу, она не распознает нажатия кнопок.   -  person Novacane    schedule 21.03.2012


Ответы (1)


Так что я понял линию, которая давала мне проблему.

На моей главной странице у меня было:

<div data-role="page" data-theme="a">

Эта строка предназначена для моей мобильной темы JQuery. Когда я закомментировал это, это сломало тему, но повторитель работал. Итак, я просмотрел документы JQuery Mobile и обнаружил, что могу добавить rel="external" в качестве атрибута ссылки, ведущей на эту страницу. Это удаляет переходы AJAX и заставляет страницу обновляться при нажатии.

Не уверен, почему именно это было проблемой, есть идеи у гуру?

person Novacane    schedule 22.03.2012