tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
539
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    bleifresser bleifresser ist offline Mitglied Bronze
    Registriert seit
    Feb 2004
    Beiträge
    48
    Hallo,

    es ist schwer, für das Problem eine geeignete Überschrift zu finden.
    Es geht um Foldendes:

    Ich habe eine ASP.Net Application (.Net 2.0), mit der in einer Datenbank gesucht werden kann. In der Datenbank sind Dateinamen und deren Speicherort (etc.) hinterlegt.
    Die Suchfunktion gibt ein DataSet zurück, welches an eine DataList gebunden wird.
    Soweit funktioniert alles.
    Nun wird in der DataList noch ein ImageButton angezeigt, mit dem der Nutzer die angezeigten Dateien in eine Art Warenkorb legen kann. Wenn er das macht, soll sich der ImageButton ändern (ein anderes Bild anzeigen). Hier beginnen die Probleme.
    Ich habe den Button und er fügt auch die Dateien in den "Warenkorb" ein. Da ich nach der SQL Anfrage die ASP Seite neu lade (Response.Redirect) um ein mehrfaches Absenden des Formulars zu verhindern (z.B. durch Strg - F5), muss ich für jeden Datensatz in der DataList prüfen, ob er im "Warenkorb" vorhanden ist und das Bild des ImageButtons ändern.
    Ich hoffe, dass verständlich ist, was ich meine.

    Auszug aus der aspx:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    <asp:DataList ID="searchResultDataList" runat="server">
                            <ItemTemplate>
                                <div class="result">
                                    <h3 class="filename"><%# DataBinder.Eval(Container.DataItem,"Filename") %></h3>
                                    <p class="left">
                                        <strong>Medium: </strong> <%# DataBinder.Eval(Container.DataItem,"Medium") %><br />
                                        <strong>Pfad:</strong> <%# DataBinder.Eval(Container.DataItem,"Path") %><br />
                                        <strong>Erstellt am:</strong> <%# DataBinder.Eval(Container.DataItem,"Creation") %>&nbsp;<strong>Gr&ouml;&szlig;e:</strong> <%# DataBinder.Eval(Container.DataItem,"Size") %> byte
                                    </p>  
                                    <p class="right">
                                        &nbsp;<asp:ImageButton ID="addFileImageButton" CommandName="AddFileToRestore" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"file_id") %>' runat="server" ImageUrl="~/pics/Add.png"
                                            OnClick="addFileImageButton_Click" /></p>  
                                   <p class="break">&nbsp;</p>         
                                </div>
                            </ItemTemplate>
                        </asp:DataList>

    Ich bin recht neu in der ASP Welt, mit PHP habe ich mehr Erfahrungen, weshalb mir ASP nicht wirklich leicht von der Hand geht. Kann ich für dieses Problem überhaupt eine Datalist nehmen?

    MfG
    Frank
     

  2. #2
    bleifresser bleifresser ist offline Mitglied Bronze
    Registriert seit
    Feb 2004
    Beiträge
    48
    Hab selber eine Lösung gefunden.
    Für alle die es interessiert:

    DataList hat ein Event namens "ItemDataBound", welcher für jeden Datensatz gefeuert wird, der an das Steuerelement gebunden wird.
    Über den zweiten Paremeter des Events, kommt man an die Daten und an die Controls im ItemTemplate ran. Der Rest ist if then else

    Hier der Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    protected void searchResultDataList_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            DataRowView dr = (DataRowView)e.Item.DataItem;
            
            if (r.ContainsMediumItem(Convert.ToInt32(dr.Row["file_id"]),"File"))
            {
                ImageButton img = (ImageButton)e.Item.FindControl("addFileImageButton");
                img.ImageUrl = "~/pics/Minus.png";
                img.CommandName = "RemoveFileFromRestore";
            }
        }

    Zur Erklärung:
    - "r" ist ein Objekt, in dem eine ArrayList gespeichert wird
    - wenn Datei mit der file_id in der ArrayList steckt, dann ändere ImageButton
    - ContainsMediumItem ist einfach nur eine Suchfunktion in r

    Tschau Frank
     

Ähnliche Themen

  1. ASP.NET und C# DataList
    Von soccer1981 im Forum .NET Application und Service Design
    Antworten: 2
    Letzter Beitrag: 27.03.07, 16:14
  2. Datalist - AccessDataSource Problem
    Von Domsi im Forum ASP
    Antworten: 0
    Letzter Beitrag: 09.08.06, 20:33
  3. DataList (letztes Item)
    Von Julian Maicher im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 25.03.05, 12:46
  4. Checkboxen in DataList/Grid sind immer false
    Von r3wDy im Forum .NET Archiv
    Antworten: 4
    Letzter Beitrag: 28.10.04, 10:17
  5. Aus DataList manuell einzelne Zeilen auslesen
    Von gravis im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 10.09.04, 15:06

Stichworte