Soy bastante nuevo en ASP.Net y no estoy seguro de que vaya por el buen camino. Tengo un repetidor que está vinculado a una lista de objetos de "Imagen". Dentro de RepeaterItem hay una casilla de verificación y tengo un botón Evento OnClick, que quiero mostrar algunos atributos de los objetos de Imagen marcados.ASP.Net - Obtención de datos de RepeaterItem
La etiqueta se actualiza, pero los metadatos están en blanco. DataBinder.Eval (i.DataItem, "FileName") regresa nulo, pero no estoy seguro de por qué? Pensé que quizás la devolución de la casilla de verificación estaba causando problemas, pero igual recibo el mismo problema si trato de mostrar los datos antes de que se hayan producido las devoluciones, así que tal vez no estoy obteniendo los atributos correctamente. ¿O estoy haciendo esto de una manera completamente incorrecta? Cualquier ayuda apreciada.
Código:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string importPath = Server.MapPath("~/Images/ForImport");
ImageProcessor processor = new ImageProcessor(importPath);
rptImageList.DataSource = processor.ImageList;
rptImageList.DataBind();
}
}
protected void btnImport_Click(object sender, EventArgs e)
{
foreach (RepeaterItem i in rptImageList.Items)
{
CheckBox chk = i.FindControl("chkSelectImage") as CheckBox;
if (chk.Checked)
{
Testlabel.Text += "Selected: " + DataBinder.Eval(i.DataItem, "FileName");
}
}
}
HTML:
<asp:Repeater ID="rptImageList" runat="server">
<ItemTemplate>
<div class="photoinstance">
<asp:Image runat="server" ImageUrl='<%#"Images/ForImport/" +DataBinder.Eval(Container.DataItem, "FileName") %>' />
<asp:CheckBox ID="chkSelectImage" AutoPostBack="true" runat="server"/>
<p><%#Eval("FileName")%> - <%#Eval("FileSize")%> bytes</p>
</div>
</ItemTemplate>
</asp:Repeater>
La propiedad 'DataItem' solo está disponible antes de la devolución de datos, en el evento' ItemDataBound'. Esto no se señala muy bien en MSDN, pero es coherente en todos los controles ASP.NET – jwiscarson