编辑:我找到了导致问题的原因,但我不知道为什么,也不知道如何解决它。我正在使用 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>
在页面加载中,我连接到一个 web 服务,该服务连接到交换并返回一个数组。我将数组快速转换为数组列表,然后其余代码是:
//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);
}