Avatar billede tomniels Nybegynder
20. september 2002 - 11:12 Der er 14 kommentarer og
3 løsninger

Datagrid formatering

Halløjsa

Jeg har et "simpelt" problem.
Jeg har hentet data op fra en database, og placeret dem i et datagrid. Ud for hver række i mit datagrid vil jeg gerne angive et navn/beskrivelse af indholdet i rækken.
Desuden vil jeg gerne have mulighed for at angive en overskrift på mit datagrid. I øjeblikket står der "Item"!!!!!
Pleace help!!!!
Avatar billede askhoej Praktikant
20. september 2002 - 11:41 #1
Brug denne artikel som udgangspunkt:

http://aspnet.4guysfromrolla.com/articles/041702-1.aspx

/Askhoej
Avatar billede tomniels Nybegynder
20. september 2002 - 12:14 #2
Den har jeg set - men jeg mangler stadig et eksempel på hvordan man angiver teksten, og ikke hvordan man ændrer style.
Avatar billede askhoej Praktikant
20. september 2002 - 12:28 #3
Er det kolonne overskrifter?

<asp:DataGrid Runat="Server">
<Columns>
  <asp:TemplateColumn HeaderText="Din_Tekst">
  <ItemTemplate></ItemTemplate>
  <EditItemTemplate></EditItemTemplate>
  </asp:TemplateColumn>
</Columns>
</asp:DataGrid>
Avatar billede odegaard Nybegynder
20. september 2002 - 13:47 #4
Den hurtige måde er at navngive kolonnerne i din SQL-query. F.eks.:
"SELECT Item As Beskrivelse, Name As Navn FROM table"
Avatar billede tomniels Nybegynder
20. september 2002 - 14:02 #5
Ja, det ene af problemerne er en kolonneoverskrift.
Når jeg gør som du skriver så laver den en ny kolonne til venstre for den kolonne mine data er bundet til, og skriver overskriften over den. (Dette har jeg også selv prøvet). Men jeg kan ikke lave en overskrift over den mine data er i!!??:-(

Det andet problem er at hvis jeg laver en kolonne til venstre for min "datakolonne", så skal den indeholde beskrivelserne af hvad der er i "datakolonnen".
                        ("datakolonnen")
eks: Beskrivelse        Data
   
    Sum                100(fra db)
    antal personer      4(fra db)
    kroner            500(fra db)

Problemet er altså at få skrevet Data over "datakolonnen", og få beskrivelserne (sum, antal personer....osv) påført mit datagrid.
Håber dette kan illustrerer problemet:-)
Avatar billede askhoej Praktikant
20. september 2002 - 14:09 #6
Du skal sætte AutoGenerateColumns="False" i dit datagrid og så lave en templateColumn for hver kolonne du vil have vist.

Du smider data i TemplateColumns sådan her:

<asp:TemplateColumn>
<ItemTemplate>
  --- Visnings mode
  <%# DataBinder.Eval(Container.DataItem, "kollonne_fra_db").ToString()%>
</ItemTemplate>
<EditItemTemplate>
  --- Redigerings mode
  <%# DataBinder.Eval(Container.DataItem, "kollonne_fra_db").ToString()%>
</EditItemTemplate>
</asp:TemplateColumn>
Avatar billede tomniels Nybegynder
20. september 2002 - 14:17 #7
Til Odegaard:
Der er så bare det problem, at jeg henter forskellige ting fra databasen og beregner mm. for så at smide værdierne op i en ArrayList der bindes til DataGrid. Derfor kan jeg ikke angive navnet i sql stringen.

Til askhoej:
Værdierne(ArrayListen) jeg skal have smidt op i mit datagrid ligger i en .cs klasse, og jeg vil helst undgå at blande funktionaliteten ind i min .aspx fil.
Kan det lade sig gøre??
Avatar billede odegaard Nybegynder
20. september 2002 - 14:21 #8
tomniels > Det var skam heller ikke den kønne løsning, men den nemme.
Måden at gøre det på er netop ved custom templates. Hér kan du også vælge kolonne-overskrifter. Kig i din SDK. Det er gode eksempler dér.
Avatar billede askhoej Praktikant
20. september 2002 - 14:32 #9
Er ikke helt med på hvad du mener med at smide en ArrayList op i dit datagrid?
Avatar billede tomniels Nybegynder
20. september 2002 - 14:37 #10
ArrayList al = r.fyldModulA1(proj_Id, kvt);// fyldModulA1 retunerer data fra databasen
dg.DataSource = al;//dg=DataGrid
dg.DataBind();
Avatar billede askhoej Praktikant
20. september 2002 - 14:42 #11
Har ikke prøvet at bruge et array som datakilde, men kan ikke se det skulle være et problem - men hvor ikke bruge din DB som datakilde?
Avatar billede tomniels Nybegynder
20. september 2002 - 14:50 #12
askhoej>> Det er heller ikke et problem at få vist ArratListen i mit datagrid, det virker godt nok...
Ang. db'en, så henter jeg data i forskellige tabeller i db'en fra forskellige klasser for tilsidst at samle det hele til en ArrayList, som det så er planen at vise i et dataGrid. Derfor vil det være mest hensigtsmessigt hvis jeg kan beholde min ArrayList.
Avatar billede odegaard Nybegynder
20. september 2002 - 15:06 #13
Du kan nu sagtens samle to dataset i ét. Det kan gøres med én enkel kommando, uden du behøver at løbe alle rækker igennem.
Anyway, det bør ligne noget i denne stil:
<asp:DataGrid id="MyDataGrid" runat="server" utoGenerateColumns="false">
    <Columns>
            <asp:BoundColumn HeaderText="Description" DataField="Item"/>
    </Columns>
</asp:DataGrid>
Avatar billede odegaard Nybegynder
20. september 2002 - 15:06 #14
ups. Der skulle stå AutoGenerateColumns (glemte A'et)
Avatar billede tomniels Nybegynder
23. september 2002 - 15:24 #15
odegaard>> Nu har jeg prøvet at sætte det du har lavet ind i min aspx fil. Men den kan ikke forstå "Item". Hvad er det der skal sættes i DataField???
Når dataField undlades laver den blot en ny (tom) kolonne ved siden af "datakolonnen" med den overskrift jeg har angivet:-(
Avatar billede odegaard Nybegynder
24. september 2002 - 00:04 #16
Item er navnet på den kolonne i det dataset dit tilknytter. Undskyld at jeg ikke lige fik uddybet.
Avatar billede tomniels Nybegynder
27. september 2002 - 10:01 #17
Hej igen - beklager den lange ventetid, jeg har haft lidt travl:-)

ang. mit problem omkring visningen af data i mit dataGrid, så har jeg fået løst problemet på en lidt anden måde end I forslår.
I min .cs fil laver jeg kolonnerne og smider dataene ind i disse:

//******************* .cs fil ******************************************

DataSet ds = new DataSet();//Laver nyt dataset til teksten
            DataTable data = ds.Tables.Add("Vises");
            //Opretter tre nye Kolonner i tabellen
            data.Columns.Add("Område", typeof(string));
            data.Columns.Add("Snit", typeof(float));           
            data.Columns.Add("Links", typeof(string));
            DataRow dr;
       
            for (int i = 0; i < t.Count; i++) // Samler teksten og dataene i et dataset
            {
                dr = data.NewRow();
                dr[0] = t[i];
                dr[1] = al[i];
                dr[2] = l[i];
                data.Rows.Add(dr);
            }
            dg.DataSource = ds;
            dg.DataBind();

//********************************************

t, al og l er alle ArrayLister som smides I datagrid'et.

I .aspx filen laves selve datagrid'et så:

//******************************** .aspx fil ********************

<asp:DataGrid id="dataGrid1" AutoGenerateColumns="False" runat="server" BorderStyle="None" GridLines="Vertical" BorderWidth="1px" BorderColor="#999999" BackColor="White" CellPadding="3">
            <FooterStyle forecolor="Black" backcolor="#CCCCCC"></FooterStyle>
            <HeaderStyle font-bold="True" forecolor="White" backcolor="#000084"></HeaderStyle>
            <PagerStyle horizontalalign="Center" forecolor="Black" backcolor="#999999" mode="NumericPages"></PagerStyle>
            <SelectedItemStyle font-bold="True" forecolor="White" backcolor="#008A8C"></SelectedItemStyle>
            <AlternatingItemStyle backcolor="Gainsboro"></AlternatingItemStyle>
            <ItemStyle forecolor="Black" backcolor="#EEEEEE"></ItemStyle>
            <Columns>
                <asp:BoundColumn DataField="Omr&#229;de" HeaderText="Omr&#229;de"></asp:BoundColumn>
                <asp:BoundColumn DataField="Snit" HeaderText="Snit"></asp:BoundColumn>
                <asp:TemplateColumn HeaderText="Link">

//***********************************************************

Da jeres ideer selvfølgelig har været med til at lede mig på sporet, har jeg valgt at dele pointene mellem os.
Tak for hjælpen:-)
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