Avatar billede set Nybegynder
21. oktober 2007 - 23:24 Der er 13 kommentarer og
1 løsning

udføre en sortering i en tabel

Jeg er ved at ændre vores webside fra asp til asp.net, men har mange problemmer.

Bl. a. har jeg lavet en tabel som nedenstående.


<table align="right" width="55%" class="table" cellpadding="2" cellspacing="1">

    <asp:Repeater ID="medlem" runat="server">
      <HeaderTemplate>
          <tr runat="server">
              <td Width="5%" Class="header" runat="server"><b><a class="menusafe" onFocus="this.blur()" href="#" onMouseOver="window.status='Sortering efter medlemsnr.'; return true;" onMouseOut="window.status=''; return true;">Nr.</a></b></td>
              <td Width="14%" Class="header" runat="server"><b>Navn</b></td >
              <td Width="15%" Class="header" runat="server"><b>Adresse</b></td>
              <td Width="15%" Class="header" runat="server"><b>Postnr/By</b></td>
              <td Width="8%" Class="header" runat="server"><b>Telefon</b></td>
              <td Width="8%" Class="header" runat="server"><b>Mobil</b></td>
              <td Width="20%" Class="header" runat="server"><b>E-mail</b></td>
              <td Width="10%" Class="header" runat="server"><b>Status</b></td>
              <td Width="5%" Class="header" runat="server">&nbsp;</td>
          </tr>
      </HeaderTemplate>
      <ItemTemplate>
          <tr ID="medlemmer" runat="server">
              <td class="table" runat="server"><%# DataBinder.Eval(Container.DataItem, "medlemnr") %>&nbsp;</td>
              <td class="table" runat="server"><%# DataBinder.Eval(Container.DataItem, "fornavn") %><br /><%# DataBinder.Eval(Container.DataItem, "efternavn") %>&nbsp;</td>
              <td class="table" runat="server"><%# DataBinder.Eval(Container.DataItem, "adresse") %>&nbsp;</td>
              <td class="table" runat="server"><%# DataBinder.Eval(Container.DataItem, "postnr") %><br /><%# DataBinder.Eval(Container.DataItem, "bynavn") %>&nbsp;</td>
              <td class="table" runat="server"><%# DataBinder.Eval(Container.DataItem, "telefon") %>&nbsp;</td>
              <td class="table" runat="server"><%# DataBinder.Eval(Container.DataItem, "mobilTlf") %>&nbsp;</td>
              <td class="table" runat="server"><a class="menusmall" href="mailto:<%# DataBinder.Eval(Container.DataItem, "e_mail_adr") %>" onMouseOver="window.status='send e-mail til <%# DataBinder.Eval(Container.DataItem, "e_mail_adr") %>'; return true;" onMouseOut="window.status=''; return true;">
<%# Email(DataBinder.Eval(Container.DataItem,"e_mail_adr").ToString()) %>
                            </a>  &nbsp;</td>
              <td class="table" runat="server"><%# DataBinder.Eval(Container.DataItem, "status") %>&nbsp;</td>
              <td class="table" runat="server"><input class="tekstgreen3" name="button22" type="button" onClick="" value="Se/Ret"></td>
          </tr>
      </ItemTemplate>
      <FooterTemplate>
      </FooterTemplate> 
    </asp:repeater>
</table>

jeg vil gerne kunne sortere de enkelte colums når jeg trykker på overskriften.
Jeg har prøvet lidt af hvert, men det vil ikke lykkes for mig at kalde den rutine som skal sørge for sorteringen.

jeg har formen .aspx der ciser outputtet og .aspx.cs hvor jeg prøver at skrive koden til siden.

Jeg håber eksperten kan hjælpe mig
Avatar billede neoman Novice
22. oktober 2007 - 08:55 #1
Nu har du ikke vist den kode du havde tænkt dig at køre, så det er ikke nemt at gætte hvad der skulle ske.

Nogen årsag til at du ikke bruger gridview, som har indbygget mekanik til den slags ?

Hvis du binder din repeater til et dataset/datatable så kan du selv få et sorteret view af data og rebinde. Der er en beskrivelse af det i et link, hvis du blot bladrer nogle poster ned ad siden hér.
Avatar billede set Nybegynder
22. oktober 2007 - 09:32 #2
jeg har i asp lavet en metode hvor siden kalder sig selv, med den parameter som der skulle sorteres efter.

I asp.net kan jeg  ikke finde ud af hvordan man kalder metoden så man kan sortere efter f. eks. Medlemnr. orden, Efternavn eller Telefon o.s.v.

Jeg har prøvet at bruge gridview, men hvis man sætter sort til true, bliver overskriften meget stor og jeg kan ikke finde en måde hvorpå jeg kan ændre på style til denne.
Jeg kan helle ikke i den samme celle indsætte f.eks. både fornavn og efternavn, men det må kunne lade sig gøre.
Avatar billede neoman Novice
22. oktober 2007 - 09:48 #3
ASP metoden med at kalde siden igen efter at en parameter er sat er,ja, ASP-metoden.

I ASP.NET har man eventhandlers til den slags - kode som kører efter man har klikket på noget. Det der sker er at siden bliver postet tilbage,  eventhandleren eksekveres.

Hvis du ikke ved hvordan det fungerer, træk en Button ind i designeren, dobbeltklik på den. Så åbnes kodevinduet, med en tom eventhandler, og derinde kan du f.eks. skrive noget så revolutionerende som MinTextBox.Text="Hello world" (hvor du altså også har en tom textbox som hedder MintextBox i din markup).

Med gridview, når du sidder med den i designeren, prøv autoformat, og vælg et af de formater der er. Så kan du i markup'en på aspx siden se hvordan det er formatteret, og så ændre deri.

Og du kan have alt muligt i en gridviewcelle. I wizarden klik på edit columns, og når du derinde har valgt en column, så nederst til højre klik på TemplateField. Så kan du editere inde i cellen, og f.eks. have flere felter fra db'en i samme celle. Hvis du laver dine fornavn & efternavn kolonner om til template fields, så kan du pille efternavn ud og sætte den sammen i samme celle som fornavn, f.eks.
Avatar billede set Nybegynder
22. oktober 2007 - 20:27 #4
Nu har jeg forsøgt hele dagen på at sætte fornavn og efternavn sammen i en celle efter at have lavet cellerne om til TemplateField, men jeg kan ikke få det til at virke.
Og jeg kan heller ikke ændre style på overskrifterne hvis jeg vælger at sætte  AllowSorting="True", så er det rimelig stor skrift i forhold til al skrift i cellerne.
Avatar billede neoman Novice
22. oktober 2007 - 20:59 #5
een ting ad gangen er nok bedst.

paste din aspx kode for dit gridview herind - det tager 10 sek at flytte om på felterne:)
Avatar billede set Nybegynder
22. oktober 2007 - 21:11 #6
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" CellPadding="2" CellSpacing="1" CssClass="table" HorizontalAlign="Center" Width="55%">
            <Columns>
                <asp:BoundField DataField="Medlemnr" HeaderText="Nr." SortExpression="Medlemnr" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:TemplateField  HeaderText="Navn" SortExpression="Fornavn">
                    <ItemTemplate>
                        <asp:Label  ID="Label1" runat="server" Text='<%# Bind("Fornavn") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Efternavn" SortExpression="Efternavn">
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Efternavn") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:TemplateField>
                <asp:BoundField DataField="Adresse" HeaderText="Adresse" SortExpression="Adresse" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:TemplateField HeaderText="Postnr" SortExpression="Postnr">
                    <ItemTemplate>
                        <asp:Label ID="Label3" runat="server" Text='<%# Bind("Postnr") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Bynavn" SortExpression="Bynavn">
                    <ItemTemplate>
                        <asp:Label ID="Label4" runat="server" Text='<%# Bind("Bynavn") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:TemplateField>
                <asp:BoundField DataField="Telefon" HeaderText="Telefon" SortExpression="Telefon" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:BoundField DataField="MobilTlf" HeaderText="MobilTlf" SortExpression="MobilTlf" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:BoundField DataField="E_mail_adr" HeaderText="E_mail_adr" SortExpression="E_mail_adr" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
            </Columns>
            <EmptyDataRowStyle CssClass="table" />
            <RowStyle CssClass="table" />
            <HeaderStyle CssClass="header" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SetLocal %>"
            SelectCommand="SELECT * FROM [tblBruger6000Web] WHERE (([Status] <> @Status) AND ([Reserve2] <> @Reserve2))">
            <SelectParameters>
                <asp:Parameter DefaultValue="udmeldt" Name="Status" Type="String" />
                <asp:Parameter DefaultValue="Betalt()" Name="Reserve2" Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>
        &nbsp;
Avatar billede neoman Novice
22. oktober 2007 - 21:25 #7
Prøv dette gridview - har blot flyttet efternavn til kolonnen navn, og slettet kolonnen Efternavn

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" CellPadding="2" CellSpacing="1" CssClass="table" HorizontalAlign="Center" Width="55%">
            <Columns>
                <asp:BoundField DataField="Medlemnr" HeaderText="Nr." SortExpression="Medlemnr" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:TemplateField  HeaderText="Navn" SortExpression="Fornavn">
                    <ItemTemplate>
                        <asp:Label  ID="Label1" runat="server" Text='<%# Bind("Fornavn") %>'></asp:Label>
                      <asp:Label ID="Label2" runat="server" Text='<%# Bind("Efternavn") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:TemplateField>
                <asp:BoundField DataField="Adresse" HeaderText="Adresse" SortExpression="Adresse" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:TemplateField HeaderText="Postnr" SortExpression="Postnr">
                    <ItemTemplate>
                        <asp:Label ID="Label3" runat="server" Text='<%# Bind("Postnr") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Bynavn" SortExpression="Bynavn">
                    <ItemTemplate>
                        <asp:Label ID="Label4" runat="server" Text='<%# Bind("Bynavn") %>'></asp:Label>
                    </ItemTemplate>
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:TemplateField>
                <asp:BoundField DataField="Telefon" HeaderText="Telefon" SortExpression="Telefon" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:BoundField DataField="MobilTlf" HeaderText="MobilTlf" SortExpression="MobilTlf" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:BoundField DataField="E_mail_adr" HeaderText="E_mail_adr" SortExpression="E_mail_adr" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
                <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" >
                    <ItemStyle CssClass="table" />
                    <HeaderStyle CssClass="header" />
                </asp:BoundField>
            </Columns>
            <EmptyDataRowStyle CssClass="table" />
            <RowStyle CssClass="table" />
            <HeaderStyle CssClass="header" />
        </asp:GridView>
Avatar billede set Nybegynder
22. oktober 2007 - 21:37 #8
Det virker.  Tak for det.
Har du evt. en løsning til style af header når jeg sættet sortering til?

ellers send et svar så du kan få dine point
Avatar billede neoman Novice
22. oktober 2007 - 21:41 #9
Har du prøvet det jeg skrev 22/10-2007 09:48:47 - at bruge et af  indbyggede formater og så ændre aspx filen  efterfølgende ? For  at få det fulde udbytte af det skal du måske totalt fjerne dine egne style ting fra gridviewet i første hug
Avatar billede set Nybegynder
22. oktober 2007 - 21:49 #10
Det har jeg prøvet, men så snart man tillader sortering har jeg endnu ikke fundet en måde at ændre style på, især skrift størrelsen
Avatar billede neoman Novice
22. oktober 2007 - 21:51 #11
Weird - det må jeg lige se ..10 min
Avatar billede neoman Novice
22. oktober 2007 - 22:00 #12
Hmmm  - jeg tror du har kigget et forkert sted, fordi jeg kan stille det som jeg har lyst, og måske er dine egne styles i vejen.

1. Tag dit gridview som du har nu
2. Fjern alt den style info du selv har tilføjet
3. i designeren vælg et af de formater der er
4. i Properties-vinduet for gridviewet, scroll ned til HeaderStyle og åbn den ved at klikke på  krydset
5. scroll ned til du finder font og åbn font ved at klikke på krydset
6. I Size tast en størrelse eller pluk noget fra den drop down der er i højre side. Det kan du så ændre efter behov.

Kig nu i ASPX filen hvordan det ser ud - så kan du ændre enten der eller i properties-vinduet.
Avatar billede set Nybegynder
22. oktober 2007 - 22:40 #13
det ser ud til at jeg skal have rette mit stylesheet flere steder.
Mange tak for hjælpen.
Avatar billede neoman Novice
22. oktober 2007 - 22:41 #14
selv tak - have fun
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