Har lite problems med en repeater control jag använder på en av mina aspx sidor. På sidan finns ett uppladdningsscript, när man laddat upp sina bilder görs en postback och då visas thumbnails på de bilder man laddat upp (1..*), samt en textbox (bild rubrik) och en radiobutton(album cover) under varje bild.
Till sist har vi en Button som ska skapa varje bild till ett Picture objekt.
Mitt problem är att jag kommer inte på något bra sätt att kunna få ut alla mina textboxar som hänger ihop med en specifik bild och kunna skapa detta som ett objekt. Har testat en massa att försöka få ur det ur min Repeater control i code-behind. Någon som har något bra tips?
Min .aspx sida:
<asp:Repeater runat="server" ID="ImageRepeater" OnItemDataBound="ImageRepeater_ItemDataBound" OnItemCreated="ImageRepeater_ItemCreated">
<ItemTemplate>
<div class="imgContent">
<div class="img_tn_cntr_144">
<a href='../../PhotoLibrary/Pictures/<%# DateTimeAddedAlbum + Eval("Name", "/{0}") %>' runat="server" target="_blank">
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Name", "ImageThumbnailer.ashx?img=PhotoLibrary/Pictures/") + DateTimeAddedAlbum + Eval("Name", "/{0}&size=144") %>'
CssClass="img_tn" BorderColor="black" BorderWidth="1px" BorderStyle="solid" /></a><br />
</div>
<label class="lblPictures">Caption</label>
<asp:TextBox Width="80px" runat="server" ID="txtCaption"></asp:TextBox><br />
<label class="lblPictures">Album cover</label>
<asp:RadioButton GroupName="AlbumCover" runat="server" ID="radioAlbumCover" />
</div>
</ItemTemplate>
</asp:Repeater><br />
<div class="break"></div>
</div>
<div style="text-align: right">
<asp:Button runat="server" ID="btnSave" OnClick="btnSave_Click" />
Min code-behind:
private void AddAlbum()
{
if (!Page.IsValid)
throw new InvalidOperationException("One or more validators are invalid.");
Album album = new Album();
album.Description = this.txtDescription.Text;
album.Name = this.txtTitle.Text;
album.Location = this.txtLocation.Text;
foreach (RepeaterItem item in ImageRepeater.Items)
{
}
}
private void ShowAddedPictures()
{
string directoryPath = HttpContext.Current.Request.PhysicalApplicationPath;
DateTimeAddedAlbum = DateTime.Now.Year.ToString();
DateTimeAddedAlbum += "-" + DateTime.Now.Month.ToString();
DateTimeAddedAlbum += "-" + DateTime.Now.Day.ToString();
string _Path = this.Server.MapPath("~/PhotoLibrary/Pictures/") + _dateTimeAddedAlbum;
try
{
if (Directory.Exists(_Path))
{
IList<FileInfo> files = new List<FileInfo>();
string filters = "*.jpg;*.png;*.gif;*.jpeg";
foreach (string filter in filters.Split(';'))
{
FileInfo[] fit = new DirectoryInfo(_Path).GetFiles(filter);
foreach (FileInfo fi in fit)
{
files.Add(fi);
}
}
this.ImageRepeater.DataSource = files;
this.ImageRepeater.DataBind();
}
}
catch (Exception e)
{
throw new Exception("An error occured: " + e.Message);
}
}