ASP.Net - Erste Daten aus RepeaterItem

Bin ich ziemlich neu ASP.Net und ich bin mir nicht sicher, ich werde über das der richtige Weg ist. Ich habe einen Repeater, die gebunden ist an eine Liste von "Bild" - Objekte. Innerhalb der einzelnen RepeaterItem ist eine checkbox und ich habe eine Schaltfläche OnClick-Ereignis, die ich anzeigen möchten einige Attribute der markierten Bildobjekte.

Dem Etikett updates, aber die Metadaten ist leer. DataBinder.Eval(ich.DataItem, "Dateiname") kommt wieder null, aber ich bin mir nicht sicher, warum? Ich dachte, vielleicht ist das postback aus der checkbox, die Probleme verursacht, aber ich bekomme immer noch das gleiche Problem, wenn ich versuche, die Daten anzuzeigen, bevor alle postbacks stattgefunden haben, also vielleicht bin ich nicht das abrufen der Attribute korrekt. Oder werde ich über diese in der komplett falschen Weg? Jede Hilfe zu schätzen.

Code:

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>
Die DataItem Eigenschaft ist nur immer verfügbar, vor dem postback in den ItemDataBound Veranstaltung. Dies ist nicht darauf hingewiesen, sich sehr gut auf der MSDN-Website, aber Sie ist konsistent in allen ASP.NET Kontrollen

InformationsquelleAutor Ant P | 2011-11-12

Schreibe einen Kommentar