链接到页面时,Repeater ItemCommand不起作用

时间:2012-03-20 03:43:14

标签: asp.net repeater linkbutton 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。但是,如果我将登录页面重定向回到此页面,或者只是从另一个页面单击此页面的链接,则单击链接按钮时不会触发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>

在页面加载中,我连接到一个连接到交换的webservice并返回一个数组。我做了一个快速数组转换为arraylist然后代码的其余部分是:

//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 个答案:

答案 0 :(得分:1)

所以我想出了给我一个问题的那条线。

在我的母版页中,我有:

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

这一行是我的JQuery Mobile主题。当我评论它时,它打破了主题,但转发器工作。所以我看了一下JQuery Mobile文档,发现我可以把rel =“external”作为属性放到链接到这个页面的链接上。这将删除AJAX转换并强制页面在单击时刷新。

不确定为什么这是一个问题,任何大师都有想法?