E edebro Medlem sedan aug. 2001 261 inlägg Frågan 12 sep. 2003 22:39 #1 Jag har följande kod, som fungerar fint;
<%@ Page Language="C#" %>
<%@ import namespace="System.Data" %>
<%@ import namespace="System.Data.OleDb" %>
<script language="C#" runat="server">
public void Page_Load(Object src,EventArgs e) {
OleDbConnection objConn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source= C:\Inetpub\work\ufk\wwwroot\test\paging\repeaterpaging.mdb");
OleDbDataAdapter objCommand=new OleDbDataAdapter("select * from Products",objConn);
DataSet ds=new DataSet();
objCommand.Fill(ds);
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = ds.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 5;
int CurPage;
if (Request.QueryString["Page"] != null)
CurPage=Convert.ToInt32(Request.QueryString["Page"]);
else
CurPage=1;
objPds.CurrentPageIndex = CurPage-1;
lblCurrentPage.Text = "Page " + CurPage.ToString() + " of " + objPds.PageCount;
if (!objPds.IsFirstPage)
lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage-1);
if (!objPds.IsLastPage)
lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=" + Convert.ToString(CurPage+1);
Repeater1.DataSource=objPds;
Repeater1.DataBind();
}
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" method="POST" runat="server">
<table width="100%" border="0">
<tr><td>
<asp:Label id="lblCurrentPage" runat="server" />
</td></tr>
<tr><td>
<asp:HyperLink id="lnkPrev" runat="server"><< Prev</asp:HyperLink>
<asp:HyperLink id="lnkNext" runat="server">Next >></asp:HyperLink>
</td></tr>
</table>
<asp:Repeater id="Repeater1" runat="server">
<itemtemplate>
<table width="100%" border="0">
<tr><td><%# DataBinder.Eval(Container.DataItem, "Product") %></td></tr>
<tr><td> </td></tr>
</table>
</itemtemplate>
</asp:repeater>
</form>
</body>
</html>
Grejen är bara att jag måste ha kontrollerna lnkPrev, lnkNext och lblCurrentPage inne i repeatern, nämligen i <footertemplate>.
Det är nu problem uppstår. Den ger mig felmeddelandet;
Kompilatorfelmeddelande: CS0246: Det gick inte att hitta typ- eller namnområdesnamnet lblCurrentPage (saknas ett using-direktiv eller en sammansättningsreferens?)
På raden;
lblCurrentPage.Text = "Sida " + CurPage.ToString() + " av " + objPds.PageCount();
Den hittar altså inte kontrollerna om jag lägger dom i Repeatern.
Hur ska man lösa detta?
B Broskan Medlem sedan mars 2000 126 inlägg Navigering
Tjena.
Bara en fundering. Varför måste du ha den i repeatern?
Kan du inte lägga den efter repeatern inom formtaggen så ser det väl likadant ut.
La ut en test:
http://www.broskan.se/edebro
<style>
.tbl_nav{font-size:12px; font-weight:bold; font-family:verdana; color:white; background-color:#000088;}
.tbl_contents{border:1px #000088 solid; font-size:12px; font-weight:bold; font-family:verdana; color:#000088; background-color:#eeeeee;}
</style>
</head>
<body>
<form name="form1" method="POST" runat="server">
<asp:Repeater id="Repeater1" runat="server">
<itemtemplate>
<table width="150" cellpadding="4" cellspacing="0" border="0" class="tbl_contents">
<tr><td><%# DataBinder.Eval(Container.DataItem, "tippare") %></td></tr>
<tr><td> </td></tr>
</table>
</itemtemplate>
</asp:repeater>
<table width="150" cellpadding="2" cellspacing="0" border="0" class="tbl_nav">
<tr><td>
<asp:Label id="lblCurrentPage" runat="server" />
</td></tr>
<tr><td>
<asp:HyperLink id="lnkPrev" style="text-decoration:none; color:white;" runat="server"><< Prev</asp:HyperLink>
<asp:HyperLink id="lnkNext" style="text-decoration:none; color:white;" runat="server">Next >></asp:HyperLink>
</td></tr>
</table>
</form>
</body>
</html>
//Broskan
E edebro Medlem sedan aug. 2001 261 inlägg Jadu, det var en mycket bra fråga. Det är ju helt sant att jag egentligen inte behöver ha den i repeatern. Men jag skulle endå vilja veta hur man kommer åt dessa kontroller för framtida bruk!
Någon som vet?
I icaaq Medlem sedan okt. 2000 5 273 inlägg Kanske nått sånt här
[red]
<asp:Repeater id="Repeater1" runat="server" onitemdatabound='repBound'>
<headertemplate>
<asp:label runat='server' id='lblCurrentPage'/>
</headertemplate>
<itemtemplate>
<table width="100%" border="0">
<tr><td><%# DataBinder.Eval(Container.DataItem, "Product") %></td></tr>
<tr><td> </td></tr>
</table>
</itemtemplate>
</asp:repeater>
[/red]
och CB
[red]
public void repBound(Object Sender, RepeaterItemEventArgs e)
{
switch(e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
// Gör dina saker här om det är Item eller AlternatingItem
break;
case ListItemType.Header:
Control _ctrl = e.Item.FindControl("lblCurrentPage");
if(_ctrl != null)
{
Label CPage = (Label)_ctrl;
CPage.Text = "Sida " + CurPage.ToString() + " av " + objPds.PageCount();
}
break;
}
}[/red]
Det är ju lite att leka m iaf ;)
Mvh icaaq