Question

EDIT: I've found what's causing the issue, but I don't know why and I don't know how to fix it. I'm using JQuery Mobile to theme my site and when I remove this line:

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

I can get the repeater to work properly. Does anyone know how I can keep my theme and get this repeater to work?

Alright I have a repeater like this:

<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>

And the code behind it looks like this

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

And if I navigate directly to this page (without being linked to it from another page) the repeater will fire the ItemCommand. But, if I have my login page redirect back to this page or just click on a link to this page from another page, the itemcommand is never triggered when clicking on the link buttons. Any clues as to why this is?

EDIT: The full code for this page is:

<%@ 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>

In page load I connect to a webservice that connects to exchange and returns an array out. I do a quick array conversion to an arraylist then the rest of the code is:

//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);
    }
Was it helpful?

Solution

So I figured out the line that was giving me an issue.

In my master page I had:

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

This line is for my JQuery Mobile Theme. When I commented it out, it broke the theme but the repeater worked. So I took a look into the JQuery Mobile docs and found that I could put rel="external" as an attribute to the link that links to this page. This removes the AJAX transitions and forces the page to refresh when clicked.

Not sure exactly why this was an issue, any gurus have an idea?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top