[asp.net rpt] 1 selected maken en om de x columns

Pagina: 1
Acties:

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
Hallo,
Het volgende probleem:
ik heb een result die ik in een asp:repeater kwijt kan. Nou moet er in dat result 1 zijn die als eigenschap selected heeft (dit gaat me nog wel lukken met een tijdelijke boolean ofzo denk ik!)! Tevens moet er om de 10 columns een nieuwe rij gestart worden (oude </tr> en een nieuwe <tr>).

Vroeger met classic asp (waar het een troepje was) deed je bijv. een count bijhouden en reponse.writejes erbij maken die een </tr><tr> deed. Maar nu werk ik met codebehind en wil alles netjes gescheiden. Alleen nu weet ik dus geen trucje om dit voorelkaar te krijgen, daarom graag was advies. Want er zijn zooo veel components te vinden en zoveel sites dat ik even de weg tussen de bomen niet meer kan zien 8)7

Hetgeen dat ik in de repeater stop is een collection die ik weer uit een item haal die zijn gegevens uit een xml file haalt (verder niet ecth belangrijk vermoed ik aangezien .net 9 v/d 10 keer toch overal mee kan werken als source :P)

Alvast reuze bedankt voor de tips!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:52

gorgi_19

Kruimeltjes zijn weer op :9

ItemTemplate en AlternateItemTemplate; je hebt toch ook een repeatdirection?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Ik snap je probleem wel. Je hebt waarschijnlijk alleen je kolommen in de repeater staan.
Nu wil je dus conditioneel de <tr> en </tr> tags gaan rendereren. (om de 10 kolommen)

Nu is het belangrijk om te weten dat de variabele Container een RepeaterItem object teruggeeft bij iedere row die wordt gedatabind. In dit object kun je ook via de de ItemIndex property van dit object bepalen hoeveelste item dit is. (letop ItemIndex begint bij 0).

Ik heb even een simpel voorbeeldje gemaakt die bij het binden van elke kolom kijkt of er een start of eind tr tags geschreven moeten worden.
De HTML:
code:
1
2
3
4
5
6
7
8
9
<asp:Repeater id="Repeater1" runat="server">
    <HeaderTemplate><table border="1"></HeaderTemplate>
    <ItemTemplate>
    <%# WriteRowTags(Container) %>
    <td><%# Container.DataItem %></td>
    </ItemTemplate>
    <FooterTemplate></tr></table></FooterTemplate>
</asp:Repeater>
</table>


De Codebehind:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
protected System.Web.UI.WebControls.Repeater Repeater1;

private void Page_Load(object sender, System.EventArgs e)
{
    // Put user code to initialize the page here
    ArrayList items = new ArrayList();
    for (int i = 1; i < 30; i ++)
    {
        items.Add("item" + i.ToString());
    }

    Repeater1.DataSource = items;
    Repeater1.DataBind();
}

protected string WriteRowTags(RepeaterItem container)
{
    string rowData = "";
    if (container.ItemIndex % 10 == 0) // Schrijf <tr> tag om de 10 kolommen
    {
        if (container.ItemIndex > 0) rowData += "</tr>"; // sluit vorige row af
        rowData += "<tr>";
    }
    
    return rowData;
}

Ik weet dat het niet de netste oplossing is om tags in je codebehind te gaan schrijven, maar denk dat je dit wel een eind op weg helpt.
Wat je overigens ook kunt doen is gebruik maken van het ItemDataBound event van de repeater. Dit event wordt getriggerd voor het renderen van elke RepeaterItem. Voor een voorbeeld zie http://www.codeproject.co...rver_Nested_Repeaters.asp.

[ Voor 9% gewijzigd door pjonk op 16-06-2006 09:40 ]

It’s nice to be important but it’s more important to be nice


  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
Het is iig een oplossing die nu werk! da's al super... als iemand nog een "betere" officiele oplossing heft hoor ik die ook graag hoor, maar het werkt iig thx for help.