AspdotnetCodes.com
Search
Articles
Books
Resources
Asp.Net News
Downloads
Free Tech Magazines
Asp.Net Web Hosting
Archives
Softwares
Newsletter
Suggest Us
Link to Us
Feeds Subscription
Articles
Questions & Answers
Tips & Tricks
 Display photos from folder and database simultaneously in datalist. Challenge?
Posted by mathieu cupryk on  2/18/2010 8:16:49 PM Category: Asp.Net 2.0
Add to my favorites
Email to friend
I have to display binary images and images from a folder in a datalist.

I am almost there. But I need your help.

The code is pretty self explanatory.
<asp:DataList ID="DLThumbnails" runat="server" DataKeyField="img_id" RepeatDirection="Horizontal"
CellPadding="3" HorizontalAlign="Center" CssClass="view" RepeatColumns="5" Item-BorderWidth="1"
Item-BorderColor="#c0c0c0" OnItemDataBound="DLThumbnails_ItemDataBound" OnItemCommand="DLThumbnails_ItemCommand"
BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"
GridLines="Horizontal" ShowFooter="False" ShowHeader="False">
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<ItemTemplate>
<table cellspacing="7" cellpadding="0" border="0">
<tr valign="top">
<td>
</td>
</tr>
<tr height="150" valign="top">
<td>
<div class="itemTemplate">
<div style="position: relative; height: 148px;">
<asp:Image runat="server" ID="view_image" Width="118" Height="148" alt='Photo from Album Number <%# Eval("img_id") %>' />
<asp:Image ID="image1" runat="server" Visible="false" Width="118" Height="148" ImageUrl="~/Images/Upload/photo1.png" />
<asp:Image ID="image2" runat="server" Visible="false" Width="118" Height="148" ImageUrl="~/Images/Upload/photo2.png" />
<asp:Image ID="image3" runat="server" Visible="false" Width="118" Height="148" ImageUrl="~/Images/Upload/photo3.png" />
<asp:Image ID="image4" runat="server" Visible="false" Width="118" Height="148" ImageUrl="~/Images/Upload/photo4.png" />
<asp:Image ID="image5" runat="server" Visible="false" Width="118" Height="148" ImageUrl="~/Images/Upload/photo5.png" />
</div>
<br />
<div class="details">
<%# Convert.ToBoolean(DataBinder.Eval(Container, "DataItem.img_is_primary"))? "Primary Picture" :"" %>
<asp:LinkButton ID="lnkSetPrimary" CssClass="pagelink2" runat="server" OnClientClick="return confirm('Do you want to make this image your primary?');"
CommandArgument='<%#DataBinder.Eval(Container.DataItem, "img_id")%>' Visible='<%# !Convert.ToBoolean(DataBinder.Eval(Container, "DataItem.img_is_primary")) %>'
Text="Set Primary Photo" OnClick="SetPrimary"></asp:LinkButton><br />
<asp:LinkButton ID="lnkRemove" CssClass="pagelink2" runat="server" OnClientClick="return confirm('Do you want to delete image?');"
CommandArgument='<%#DataBinder.Eval(Container.DataItem, "img_id")%>' Text="Remove"
OnClick="DeleteImage"></asp:LinkButton>
</div>
</div>
</td>
</tr>
</table>
<h4><%# Server.HtmlEncode(Eval("img_caption").ToString()) %></a></h4>
<%# Eval("NumberOfPhotos")%> Photo(s)
</ItemTemplate>
<ItemStyle Width="20%" BackColor="#E7E7FF" ForeColor="#4A3C8C" />
<SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<FooterTemplate>
</FooterTemplate>
</asp:DataList>


protected void DLThumbnails_ItemDataBound(object sender, DataListItemEventArgs e)
{

System.Web.UI.WebControls.Image img = null;
// make sure this is an item in the data list (not header etc.)
if ((e.Item.ItemType == ListItemType.Item) ||
(e.Item.ItemType == ListItemType.AlternatingItem))
{
//lblCaption.Text = "Image # " + e.CommandArgument;
// get a reference to the image used for the bar in the row
img = (System.Web.UI.WebControls.Image)
(e.Item.FindControl("view_image"));


//get the img_pk from DataRow being bound
int itemIndex = e.Item.ItemIndex;
string img_pk = DLThumbnails.DataKeys[itemIndex].ToString();
img.ImageUrl = "Handler.ashx?img_id=" + img_pk + "&" + "imagesize=F";
img.ID = img_pk;
img.AlternateText = "Thumbnail of Photo Number =" + img_pk;
img.ToolTip = "Thumbnail of Photo Number =" + img_pk;


DataSet ds = new DataSet();
ds = GetBinaryImagesByProfileID.FetchAllImagesInfo(intGetProfileID, "omegaloveConnectionString");
CountPhotos = Convert.ToInt32(ds.Tables[0].Rows[0]["NumberOfPhotos"].ToString());
//Get the count of images to be displayed
int imgCountToBeDisplayed = 5 - CountPhotos;
//In the for loop
for (int i = 5; i >= imgCountToBeDisplayed; i--)
{
string imageId = string.Format("image{0}", i);
System.Web.UI.WebControls.Image image =(System.Web.UI.WebControls.Image) e.Item.FindControl(imageId);
image.Visible = true;
}



}

if ((e.Item.ItemType == ListItemType.Footer))
{
if ((DLThumbnails.Items.Count == 0))
{
Panel1.Visible = true;
}
}

}


Post Your Reply Post New Question

 Viewer's Reply
Re:
Answered By Shanu_Sudha on 2/19/2010 3:03:50 AM
Hi.. I think, you failed explain your problem clearly...

I think, you've tried too many process to just bind the image into datalist.. Very simple coding is available..

Anyway can u explain your problem clearly...?
 
Post Your Reply If you still have problem, post it again under this reply for better response.

 
Sponsored by
The JavaScript Anthology: 101 Essential Tips, Tricks & Hacks - Free 158 Page Preview
Easing the Migration to Microsoft SQL Server 2005
Building a Web Application Security Program