Avatar billede segato Nybegynder
18. marts 2005 - 21:23 Der er 11 kommentarer og
1 løsning

Datagrid customizing

Kan man ikke lige som i datalist redigere sine data inden de bliver vist. Hvis man binder et dataset f.eks. med vægt i så adde streng kg. i det der bliver vist. Eller generere et link ud fra de data der står i datagrid?
Avatar billede snepnet Nybegynder
18. marts 2005 - 22:18 #1
Hej segato :o)

Du kan tilføje en linkkolonne sådan her :
<asp:HyperLinkColumn
    Text="Link"
    DataNavigateUrlField="Id"
    DataNavigateUrlFormatString="http://www.somesite.dk?Id={0}">
</asp:HyperLinkColumn>

Du kan også få teksten i linket til at blive taget fra en property i din datakilde ved at bruge DataTextField istedet.

du har muligheden for at abbonere på eventet ItemDataBound sådan her :

// deklarativt
OnItemDataBound="grid_ItemDataBound"

// eller programmatisk
someGrid.ItemDataBound += new DataGridItemEventHandler(this.grid_ItemDataBound);

// i begge tilfælde
protected void grid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
  // ... hvad du nu vil gøre
}

i selve handleren vil du typisk have noget i denne stil :
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
  // ... her kan du så gøre noget ved "almindelige" rækker
}

Der er flere itemtypes (HeaderItem, FooterItem, Pager, SelectedItem, EditItem, Separator).

mvh
Avatar billede segato Nybegynder
18. marts 2005 - 22:31 #2
Hey Sneppet tak for dit fine svar. Jeg er rimelig grøn her. Lige nu har jeg en datagrid med et dataset med tre rækker(vægt, bruger, fisk)
Jeg vil gerne lave bruger om til et link som linker til en anden side, og jeg vil gerne ændre vægt til noget med kg bagefter. jeg bruger whidbey som ide er lidt anderledes. Kan du vise mig kode mæssigt hvordan jeg ville opnå dette?
Avatar billede segato Nybegynder
18. marts 2005 - 22:45 #3
Jeg fik tilføjet en link collumn men den tilføjer en ny kollone. Hvad hvis jeg ba vil ændre den eksistrende kollone? Kan man ikke ændre teksten på en nem måde?
Avatar billede snepnet Nybegynder
18. marts 2005 - 23:27 #4
Griddet genereres automatisk udfra den datakilde du giver det... hvis du vil styre kolonnerne selv, skal du overtage styrringen ved at angive AutoGenerateColumns="false" på griddet.
Men.... hvis du bruger whidbey bør du bruge et gridview istedet for et datagrid. Hvilket ide bruger du ? (hvis du bruger et af de nye ide'er er der nogle shortcuts).
mvh
Avatar billede snepnet Nybegynder
18. marts 2005 - 23:36 #5
skriv lige tilbage om du bruger et ide, og hvilket.... jeg kan også lave et mere komplet whidbey/gridview eksempel til dig hvis det er.
mvh
Avatar billede segato Nybegynder
19. marts 2005 - 09:44 #6
hej Sneppet jeg bruger whidbey ide. Og der findes vist ik datagrid i whidbey så det er gridbiew jeg bruger.

Har som sagt 3 rækker bruger,vægt,user

Vægt vil jeg smide et kg bag og bruger vil jeg lave til et link der linker videre til en ny side. Hvis du vil vise lidt kode ville det være mere end fornemt.
Avatar billede snepnet Nybegynder
19. marts 2005 - 11:47 #7
Der er skam stadig et datagrid til rådighed kan du tro - der er bare ikke nogen grund til at bruge det når gridviewet er kommet.

du kan få lige kode her (nu har du skrevet lidt forskelligt om hvad det er for nogle kolonner du har... så her har du user, weight, fish)

<asp:SqlDataSource
    ID="simpleDataSource"
    Runat="Server"
    ConnectionString="..."
    SelectCommand="select user, weight, fish from whatever">
</asp:SqlDataSource>
<asp:GridView ID="grid" Runat="server" DataSourceID="simpleDataSource" DataKeyNames="user" EmptyDataText="There are no data records to display." AutoGenerateColumns="False">
    <Columns>
        <asp:HyperLinkField HeaderText="Bruger" DataNavigateUrlFields="user" DataNavigateUrlFormatString="http://www.{0}.dk" DataTextField="user"></asp:HyperLinkField>
        <asp:BoundField HeaderText="Vægt" DataField="weight" SortExpression="weight" DataFormatString="{0} Kg"></asp:BoundField>
        <asp:BoundField HeaderText="Fisk" DataField="fish" SortExpression="fish"></asp:BoundField>       
    </Columns>
</asp:GridView>

Mvh
Avatar billede segato Nybegynder
19. marts 2005 - 11:52 #8
Det fandme super. Smid et svar mester takker for hjælpen.
Avatar billede snepnet Nybegynder
19. marts 2005 - 11:55 #9
Det var så lidt segato - vi skrives ved :o)
mvh
Avatar billede segato Nybegynder
19. marts 2005 - 12:02 #10
Har lige et lyn spørgsmål.

<asp:HyperLinkField HeaderText="Bruger" DataNavigateUrlFields="Bruger" DataNavigateUrlFormatString="http://www.{0}.dk" DataTextField="Bruger"></asp:HyperLinkField>

Hvis man nu også ville overføre noget fra en af de andre kolonner er det så muligt?
http://www.{0}.dk?vægt=værdien fra vægt koonne her?
Avatar billede snepnet Nybegynder
19. marts 2005 - 14:28 #11
Hmm... du kommer nok til at lave dig en custom-kolonne så - f.eks. sådan her :

<asp:TemplateColumn HeaderText="link" visible="true">
    <ItemTemplate>
        <asp:HyperLink id="someLink" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"bruger") %>' NavigateUrl='<%# String.Format("http://www.{0}.dk?vaegt={1}", DataBinder.Eval(Container.DataItem,"bruger"), DataBinder.Eval(Container.DataItem,"vaegt")) %>' />
    </ItemTemplate>
</asp:TemplateColumn>

mvh
Avatar billede segato Nybegynder
19. marts 2005 - 14:33 #12
Ok lige som datalisten. Takker igen.
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