Повторитель ItemCommand не работает при ссылке на страницу - PullRequest
1 голос
/ 20 марта 2012

РЕДАКТИРОВАТЬ: Я нашел, что вызывает проблему, но я не знаю, почему, и я не знаю, как ее исправить.Я использую 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.Но если я перенаправлю свою страницу входа обратно на эту страницу или просто нажму на ссылку на эту страницу с другой страницы, команда item никогда не запускается при нажатии на кнопки ссылки.Любые подсказки, почему это так?

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

<%@ 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);
    }

1 Ответ

1 голос
/ 22 марта 2012

Так я понял, что линия дает мне вопрос

1002 * В моей главной странице я имел:.
<div data-role="page" data-theme="a">

Эта строка для моего JQuery Mobile Theme.Когда я заметил это, он сломал тему, но повторитель работал.Так что я взял заглянуть в документы JQuery Mobile и обнаружил, что я мог бы поставить отн = «внешний» в качестве атрибута ссылки, ссылки на этой странице.Это устраняет переходы AJAX и заставляет страницу, чтобы обновить при нажатии.

1007 * Не уверен, почему именно это был вопрос, какой гуру есть идея?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...