Optimization tips
Access database only one time and take mutiple dataset. Using this we can reduce access time of database.
Steps1
Create store procedure
Step2
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: Lakmal
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [theredzone].[LakmalNFC]
AS
BEGIN
select ShortTeamName,Category,City,TeamID,Logo,TeamColor,TeamFont,ForumID,Tickets from theredzone.NFLTeam
where Category like 'AFC%' and
(ShortTeamName IN(select Team from theredzone.NFLHeadlines)) ORDER BY NFLTeam.Category, NFLTeam.City, NFLTeam.TeamID
select ShortTeamName,Category,City,TeamID,Logo,TeamColor,TeamFont,ForumID,Tickets from theredzone.NFLTeam
where Category like 'NFC%' and
(ShortTeamName IN(select Team from theredzone.NFLHeadlines)) ORDER BY NFLTeam.Category, NFLTeam.City, NFLTeam.TeamID
select idno,Headline,Link,Team,PDate from theredzone.NFLHeadlines where PDate = (Select Max(PDate) from theredzone.NFLHeadlines)
END
Create nested repeater
table>
tr>
td valign="top">
div align="center">
img src="http://www.theredzone.org/images/AFC.gif " height="31px" />
br />
span style="font-size: 12pt; font-family:Verdana; color:Red">
strong>
AFC
/strong>
/span>
/div>
asp:Repeater ID="rptAFC" runat="server" OnItemDataBound="rptAFC_ItemDataBound">
ItemTemplate>
table width="100%">
tr>
td bgcolor=%# Eval("TeamColor")%> align="center" >
span style="font-size: 12pt; font-family:Verdana; color: %# Eval("TeamFont")%>">strong>%# Eval("ShortTeamName")%>/strong>/span>
/td>
/tr>
tr>
td>
ul >
asp:Repeater ID="rptAFCLink" runat="server">
ItemTemplate>
div>
li>
asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" NavigateUrl=%# Eval("Link")%> >span style="font-size: 10pt; font-family:Verdana">%# Eval("Headline")%>/span> /asp:HyperLink>
span style="font-size: 10pt; font-family:Verdana">%# Eval("PDate","{0:MM/dd/yyyy}")%>/span>
br />
/li>
/div>
/ItemTemplate>
/asp:Repeater>
/ul>
/td>
/tr>
tr>
td align="center">
br/>
asp:HyperLink ID="HyperLink2" runat="server" Target="_blank" NavigateUrl=%# Eval("Tickets")%>>
span style="font-size: 8pt; font-family:Verdana">
Looking For %# Eval("ShortTeamName")%> ' Tickets? Click Here
/span>
/asp:HyperLink>
br />
asp:HyperLink ID="HyperLink3" runat="server" Target="_blank" NavigateUrl= %# Eval("ShortTeamName","http://www.theredzone.org/archives/showteam.asp?Team={0}" ) %>>
span style="font-size: 8pt; font-family:Verdana">
Miss a story? Look for it in our %# Eval("ShortTeamName")%> ' News Archives
/span>
/asp:HyperLink>
br />
asp:HyperLink ID="HyperLink4" runat="server" Target="_blank" NavigateUrl= %# Eval("ForumID","http://forum.theredzone.org/viewforum.php?f={0}" ) %>>
span style="font-size: 8pt; font-family:Verdana">
Talk about it in the %# Eval("ShortTeamName")%> ' Forum
/span>
/asp:HyperLink>
br />
/td>
/tr>
/table>
/ItemTemplate>
/asp:Repeater>
/td>
td valign="top">
div align="center">
img src="http://www.theredzone.org/images/NFC.gif " height="31px" />
br />
span style="font-size: 12pt; font-family:Verdana; color:DarkBlue">
strong>
NFC
/strong>
/span>
/div>
asp:Repeater ID="rptNFC" runat="server" OnItemDataBound="rptNFC_ItemDataBound" >
ItemTemplate>
table width="100%">
tr>
td bgcolor=%# Eval("TeamColor")%> align="center" >
span style="font-size: 12pt; font-family:Verdana; color: %# Eval("TeamFont")%>">strong>%# Eval("ShortTeamName")%>/strong>/span>
/td>
/tr>
tr>
td>
ul >
asp:Repeater ID="rptNFCLink" runat="server">
ItemTemplate>
div>
li>
asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" NavigateUrl=%# Eval("Link")%> >span style="font-size: 10pt; font-family:Verdana">%# Eval("Headline")%>/span> /asp:HyperLink>
span style="font-size: 10pt; font-family:Verdana">%# Eval("PDate","{0:MM/dd/yyyy}")%>/span>
br /> /div>
/li>
/ItemTemplate>
/asp:Repeater>
/ul>
/td>
/tr>
tr>
td align="center">
br/>
asp:HyperLink ID="HyperLink2" runat="server" Target="_blank" NavigateUrl=%# Eval("Tickets")%>>
span style="font-size: 8pt; font-family:Verdana">
Looking For %# Eval("ShortTeamName")%> ' Tickets? Click Here
/span>
/asp:HyperLink>
br />
asp:HyperLink ID="HyperLink3" runat="server" Target="_blank" NavigateUrl= %# Eval("ShortTeamName","http://www.theredzone.org/archives/showteam.asp?Team={0}" ) %>>
span style="font-size: 8pt; font-family:Verdana">
Miss a story? Look for it in our %# Eval("ShortTeamName")%> ' News Archives
/span>
/asp:HyperLink>
br />
asp:HyperLink ID="HyperLink4" runat="server" Target="_blank" NavigateUrl= %# Eval("ForumID","http://forum.theredzone.org/viewforum.php?f={0}" ) %>>
span style="font-size: 8pt; font-family:Verdana">
Talk about it in the %# Eval("ShortTeamName")%> ' Forum
/span>
/asp:HyperLink>
br />
/td>
/tr>
/table>
/ItemTemplate>
/asp:Repeater>
/td>
/tr>
/table>
Step3
Create dataset relationship and provide repeaters datasource
if (!Page.IsPostBack)Step4
{
DataSet ds = new DataSet();
ds = DataProvider.Instance().GetTeamLink();
ds.Relations.Add(new DataRelation("AFC", ds.Tables[0].Columns["ShortTeamName"], ds.Tables[2].Columns["Team"],false ));
ds.Relations.Add(new DataRelation("NFC", ds.Tables[1].Columns["ShortTeamName"], ds.Tables[2].Columns["Team"], false));
rptAFC.DataSource = ds.Tables[0];
rptAFC.DataBind();
rptNFC.DataSource = ds.Tables[1];
rptNFC.DataBind();
}
Handle itemdatabound event in repeaters
protected void rptAFC_ItemDataBound(object sender, RepeaterItemEventArgs e)Using this method you dont want access database each drill position. You can work with data in your memory. I asking community to expand this method and let me know
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView drv = e.Item.DataItem as DataRowView;
Repeater ChildRep = e.Item.FindControl("rptAFCLink") as Repeater;
ChildRep.DataSource = drv.CreateChildView("AFC");
ChildRep.DataBind();
}
}
protected void rptNFC_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView drv = e.Item.DataItem as DataRowView;
Repeater ChildRep = e.Item.FindControl("rptNFCLink") as Repeater;
ChildRep.DataSource = drv.CreateChildView("NFC");
ChildRep.DataBind();
}
}