I don't know if I understand membership wellâ¦
I want to make a site based on thebeerhouse.
In that forum each time that I open one topic page, the system has to show for each reply:
author.profile.posts
author.profile.avatar
author.profile.mail
author.profile.msn
author.profile.signature
author.profile. (etc)
If the topics page has 20 replies all by different members(authors)
There will be 20 members + 1 dataset for 20 topics messages.
This is 21 database connections for one single page!
Give a look in the code:
Code:
<asp:GridView ID="gvwPosts" runat="server" SkinID="Posts" AllowPaging="True" AutoGenerateColumns="False" ShowHeader="false"
DataSourceID="objPosts" PageSize="25" DataKeyNames="ID" OnRowCommand="gvwPosts_RowCommand" OnRowDataBound="gvwPosts_RowDataBound">
<Columns>
<asp:TemplateField ItemStyle-Width="120px" ItemStyle-CssClass="postinfo">
<ItemTemplate>
<div class="posttitle" style="text-align:right;">
<asp:HyperLink runat="server" ID="lnkEditPost" ImageUrl="~/Images/Edit.gif" NavigateUrl="~/AddEditPost.aspx?ForumID={0}&ThreadID={1}&PostID={2}" />
<asp:ImageButton runat="server" ID="btnDeletePost" ImageUrl="~/Images/Delete.gif"
OnClientClick="if (confirm('Are you sure you want to delete this {0}?') == false) return false;"/>
</div>
<asp:Literal ID="lblAddedDate" runat="server" Text='<%# Eval("AddedDate", "{0:D}<br/><br/>{0:T}") %>' />
<asp:Literal ID="lblAddedBy" runat="server" Text='<%# Eval("AddedBy") %>' /><br /><br />
<asp:Literal ID="lblPosts" runat="server"
Text='<%# "Posts: " + GetUserProfile(Eval("AddedBy")).Forum.Posts.ToString() %>' />
<asp:Literal ID="lblPosterDescription" runat="server"
Text='<%# "<br />" + GetPosterDescription(GetUserProfile(Eval("AddedBy")).Forum.Posts) %>'
Visible='<%# GetUserProfile(Eval("AddedBy")).Forum.Posts >= Globals.Settings.Forums.BronzePosterPosts %>'/> <br /><br />
<asp:Panel runat="server" ID="panAvatar" Visible='<%# GetUserProfile(Eval("AddedBy")).Forum.AvatarUrl.Length > 0 %>'>
<asp:Image runat="server" ID="imgAvatar" ImageUrl='<%# GetUserProfile(Eval("AddedBy")).Forum.AvatarUrl %>' />
<br /><br />
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<div class="posttitle"><asp:Literal ID="lblTitle" runat="server" Text='<%# Eval("Title") %>' /></div>
<div class="postbody">
<asp:Literal ID="lblBody" runat="server" Text='<%# Eval("Body") %>' /><br /><br />
<asp:Literal ID="lblSignature" runat="server"
Text='<%# Helpers.ConvertToHtml(GetUserProfile(Eval("AddedBy")).Forum.Signature) %>' /><br /><br />
<div style="text-align: right;">
<asp:HyperLink runat="server" ID="lnkQuotePost"
NavigateUrl="~/AddEditPost.aspx?ForumID={0}&ThreadID={1}&QuotePostID={2}">Quote Post</asp:HyperLink>
</div>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code-Behind:
Code:
protected ProfileCommon GetUserProfile(object userName)
{
string name = (string)userName;
if (!profiles.Contains(name))
{
ProfileCommon profile = this.Profile.GetProfile(name);
profiles.Add(name, profile);
return profile;
}
else
return profiles[userName] as ProfileCommon;
}
If my replies page has 20 replies by different members i have 21 database connections right?
It is good policy?
Thanks very much.
I want to upgrade my forum for framework 2 and i need to resolve this doubts... I only want a fast page.
p.s. I tried to make this discussion in problem/solution(2) forum but I didn't have much success...