Avatar billede dehaas Nybegynder
21. august 2006 - 16:48 Der er 21 kommentarer og
1 løsning

Repeater og ArrayList

Hej,

Jeg har en Repeater som en bundet til en ArrayList.

Denne ArrayList indeholder objecter af min egen type.

Ideen er nu at jeg vil have vist disse informationener i min Repetaer, en af gangen.

Altså så det kan komme til at se nogenlunde sådan ud:

Object.Navn (Object.NogetAndet)
---
Object.Navn (Object.NogetAndet)
--

etc.

Endvidere vil jeg gerne have hver linje i repeateren til at skifte farve, hvordan kan jeg gøre dette?

På forhånd mange tak for jeres hjælp.
Avatar billede snepnet Nybegynder
21. august 2006 - 17:23 #1
Et gridview virker mere relevant med den beskrivelse.... Skal det være en repeater?
Mvh
Avatar billede snepnet Nybegynder
21. august 2006 - 17:25 #2
Her er lidt forskellig styling af diverse....

<asp:GridView
    ID="GridView1"
    runat="server"
    AutoGenerateColumns="True"
CellPadding="4" ForeColor="#333333" GridLines="None">
    <Columns>
        <asp:BoundField DataField="SomeProperty" HeaderText="Whatever" SortExpression="City"/>
    </Columns>
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <EditRowStyle BackColor="#999999" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>

Mvh
Avatar billede snepnet Nybegynder
21. august 2006 - 17:26 #3
Læg mærke til:
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
Mvh
Avatar billede dehaas Nybegynder
21. august 2006 - 17:47 #4
DEt var da bestemt ganske smart. Men da jeg skal have data ind fra mit eget objekt regnede jeg med jeg skulle have labels i min repeater. Derudover skal jeg også have en checkbox for hvert 'item'.

Jeg har brug for at sætte tekster og håndtere events for checkboxene fra min sourcekode.
Avatar billede snepnet Nybegynder
21. august 2006 - 17:59 #5
Nøh ... det behøver du sådan set ikke - et gridview viser hvad som helst:

Hvis du har en arraylist:

ArrayList liste = new ArrayList();

Med en stak objekter i:

list.Add(new Person("Hans"));
list.Add(new Person("Poul"));
list.Add(new Person("Ib"));

Kan du bruge den som datakilde:
GridView1.DataSource = liste;

Og databinde:
GridView1.DataBind();

Og for god ro og ordens skyld:

public class Person
{
  private string m_Name;
  public string Name
  {
    get{return m_Name;}
  }

  public Person(string name)
  {
    m_Name = name;
  }
}

Mht. hvad du eller har lyst til at sætte ind i grid'et, så er der andre typer en BoundFied (check det ud), og du opnår bedst muligheder for tilpasning ved at lave templates:

<asp:GridView
    ID="GridView1"
    runat="server"
    AutoGenerateColumns="True"
CellPadding="4" ForeColor="#333333" GridLines="None">
    <Columns>
    <asp:TemplateField>
      <ItemTemplate>
        <asp:Label id="lblName" runat="server" Text='<%# Eval("Name") %>' />
      </ItemTemplate>
      <AlternatingItemTemplate>
        du behøver ikke denne template, men kan angive den, hvis den skal være anderles
      </AlternatingItemTemplate>
    </asp:TemplateField>

    </Columns>
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <EditRowStyle BackColor="#999999" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>

Mvh
Avatar billede dehaas Nybegynder
21. august 2006 - 18:02 #6
Jamen det er jo rigtig smart. Hvad gør jeg så med min checkbox?
Avatar billede snepnet Nybegynder
21. august 2006 - 18:13 #7
Sætter den ind i din template.
Mvh
Avatar billede snepnet Nybegynder
21. august 2006 - 18:13 #8
Altså ... lave en ny templatekolonne som viser en template.
Mvh
Avatar billede dehaas Nybegynder
21. august 2006 - 18:32 #9
Hvordan kan jeg så styre det event der kommer når status bliver changed?
Avatar billede snepnet Nybegynder
21. august 2006 - 18:47 #10
Du kan f.eks. håndtere det ved at abbonnere direkte på det - OnCheckedChange på checkboxen.... På samme måde som du altid gør med alle andre kontroller.
Mvh
Avatar billede dehaas Nybegynder
21. august 2006 - 18:52 #11
oh, men skal jo på en eller anden måde få at vide hvilket item man har trykke på. Eksempel få .Navn fra objectet?
Avatar billede snepnet Nybegynder
21. august 2006 - 18:59 #12
Du kan ikke få .Navn på det objekt du har databundet til med mindre du databinder ved hvert request.
Det kan du så selvfølgelig gøre (databinde ved hvert request) - eller benytte en oplysning i listen til at få fat i det rigtige objekt med:
http://geekswithblogs.net/azamsharp/archive/2006/01/10/65433.aspx
Mvh
Avatar billede dehaas Nybegynder
21. august 2006 - 19:03 #13
Kigger jeg lige på. Har i mellemtien lige et andet problem. Jeg kan ikke få den til at lave være med at skriver .Navn værdien i en kolonne til sidst.
Avatar billede snepnet Nybegynder
21. august 2006 - 19:06 #14
AutoGenerateColumns="False"
Mvh
Avatar billede dehaas Nybegynder
21. august 2006 - 20:42 #15
Hmm, tror det er tæt på at køre perfekt nu. Har brae lidt et problem med det link du gav mig. Har oversat koden til vb:

        Dim checkbox As CheckBox = CType(sender, CheckBox)
        Dim row As GridViewRow = CType(checkbox.NamingContainer, GridViewRow)
        Label1.Text = row.Cells(0).Text()

Men jeg får en tom streng tilbage :S
Avatar billede snepnet Nybegynder
21. august 2006 - 20:50 #16
Hvis du benytter templaten, og har lavet en label - skal du have fat i den:

Dim lbl As Label = CType(row.Cell(0).Controls(0), Label)
Dim dinText = lbl.Text

Mvh
Avatar billede dehaas Nybegynder
21. august 2006 - 21:34 #17
Hmm, nu har jeg skrevet:

        Dim checkbox As CheckBox = CType(sender, CheckBox)
        Dim row As GridViewRow = CType(checkbox.NamingContainer, GridViewRow)
       
        Dim lbl As Label = CType(row.Cells(0).Controls(0), Label)
        Label1.Text = lbl.Text

Men jeg får denne fejl:

Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'System.Web.UI.WebControls.Label'.

Fejlen kommer på linjen:

        Dim lbl As Label = CType(row.Cells(0).Controls(0), Label)
Avatar billede snepnet Nybegynder
21. august 2006 - 21:43 #18
Hvordan ser dit grid ud i aspx'en nu?
Mvh
Avatar billede dehaas Nybegynder
22. august 2006 - 19:26 #19
således:

<asp:GridView
    ID="GridView1"
    runat="server"
    AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333" GridLines="None">
    <Columns>
    <asp:TemplateField>
      <ItemTemplate>
        <asp:Label id="lblName" runat="server" Text='<%# Eval("Name") %>' />
      </ItemTemplate>
    </asp:TemplateField>
   
    <asp:TemplateField>
      <ItemTemplate>
          <asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged=CheckBox1_ItemChanged AutoPostBack="true" />
      </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <EditRowStyle BackColor="#999999" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
Avatar billede snepnet Nybegynder
22. august 2006 - 19:38 #20
Dim lbl As Label = CType(row.FindControl("lblName"), Label)
Label1.Text = lbl.Text
Mvh
Avatar billede dehaas Nybegynder
22. august 2006 - 19:45 #21
Herligt, jamen så virker det jo. Så kan jeg i hvert fald komme videre, mange tak for din hjælp. Smid et svar.
Avatar billede snepnet Nybegynder
22. august 2006 - 19:58 #22
Det var så lidt :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester