Zugreifen auf Textfelder in der Repeater-Steuerung

Alle Möglichkeiten, die ich mir vorstellen kann, um dies zu tun, scheinen sehr hackisch. Was ist der richtige oder der gebräuchlichste Weg, dies zu tun?

Ich rufe eine Reihe von Bildern aus einer LINQ-to-SQL-Abfrage ab und verbinde sie und einige andere Daten mit einem Repeater. Ich muss jedem Element im Repeater ein Textfeld hinzufügen, mit dem der Benutzer den Titel jedes Bildes ändern kann, ähnlich wie bei Flickr.

Wie greife ich auf die Textfelder im Repeater-Steuerelement zu und weiß, zu welchem Bild das Textfeld gehört?

So würde das Repeater-Steuerelement mit einer Schaltfläche zum Senden aussehen, mit der alle Bildzeilen in Linq-to-SQL aktualisiert werden:

Alternativtext http://casonclagg.com/layout.jpg

Bearbeiten:

Dieser Code funktioniert

Stellen Sie einfach sicher, dass Sie Ihre Werte nicht in die Luft jagen, indem Sie außerhalb von if (! Page.IsPostBack) wie ich binden.

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <div class="itemBox">
            <div class="imgclass">
                <a title='<%# Eval("Name") %>' href='<%# Eval("Path") %>' rel="gallery">
                    <img alt='<%# Eval("Name") %>' src='<%# Eval("Path") %>' width="260" />
                </a>
            </div>
            <asp:TextBox ID="TextBox1" Width="230px" runat="server"></asp:TextBox>
        </div>
    </ItemTemplate>
</asp:Repeater>

Und Klick absenden:

protected void Button1_Click(object sender, EventArgs e)
{
    foreach (RepeaterItem item in Repeater1.Items)
    {
        TextBox txtName = (TextBox)item.FindControl("TextBox1");
        if (txtName != null)
        {
            string val = txtName.Text;
            //do something with val
        }
    }
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage