Reputation: 69
I am trying to display pictures from folder Images with a repeater,but the probelm pictures can not display i don't know why .
<div data-u="slides" style="cursor: default; position: relative; top: 0px; left: 0px; width: 800px; height: 356px; overflow: hidden;">
<asp:Repeater runat="server" ID="RepaterImages">
<ItemTemplate>
<div runat="server" data-p="144.50">
<img id="Image" runat="server" data-u="image" style="Width:120px;" src='<%#Container.DataItem %>'/>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
protected void Page_Load(object sender, EventArgs e)
{
int id = Convert.ToInt32(Request.QueryString["id"]);
var path = Server.MapPath("ProjectsImages/ ");
var images = Directory.GetFiles(path,id+"*");
ArrayList list = new ArrayList();
foreach (var img in images)
{
list.Add(img);
}
RepaterImages.DataSource = images;
RepaterImages.DataBind();
}
Upvotes: 1
Views: 813
Reputation: 83
You have missed out the Postback property. Please use the code below.
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
int id = Convert.ToInt32(Request.QueryString["id"]);
var path = Server.MapPath("ProjectsImages/ ");
var images = Directory.GetFiles(path,id+"*");
ArrayList list = new ArrayList();
foreach (var img in images)
{
list.Add(img);
}
RepaterImages.DataSource = list;
RepaterImages.DataBind();
}
}
Upvotes: 0
Reputation: 745
The problem with your code is, you are using physical path of the image. You will have to provide relative path to repeater. Change your code as below, it should work I think:
protected void Page_Load(object sender, EventArgs e)
{
try
{
int id = Convert.ToInt32(Request.QueryString["id"]);
string relativePath = "/ProjectsImages/";
var path = Server.MapPath(relativePath);
var images = Directory.GetFiles(path, id + "*").Select(x =>
{
var arrPath = x.Split('\\');
string imgName = arrPath[arrPath.Length - 1];
return relativePath + imgName;
});
RepaterImages.DataSource = images;
RepaterImages.DataBind();
}
catch (Exception ex)
{
throw ex;
}
}
Upvotes: 3