Tonen van data in een grid

Status
Niet open voor verdere reacties.

Myclos81

Gebruiker
Lid geworden
17 nov 2007
Berichten
157
Hallo,

ik gebruik VS 2010 - ASP.NET / C#.
Nu heb ik een dataset met klantgegevens opgevuld uit een databank die ik enkel wil TONEN en bij de namen een hyperlink plaatsen.

Ik gebruik momenteel een datagrid. Is dit de correcte keuze of gebruik ik beter een datagridview of een detailsview?

De datagrid wordt opgevuld met de dataset met volgende code:

C#
_dgrCustomer.DataSource = ds;
_dgrCustomer.DataBind();

ASP.NET
<asp:datagrid id="_dgrCustomer" runat="server" CssClass="Grid">
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<SelectedItemStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" Mode="NumericPages" />
<AlternatingItemStyle BackColor="#a9d389" ForeColor="#48576C" />
<ItemStyle BackColor="#e3f0d9" ForeColor="black" Font-Size="10pt" />
<HeaderStyle BackColor=silver Font-Bold="True" ForeColor="Black" />
</asp:DataGrid>

Probleem is dat ik de breedte van mijn kolommen wil aanpassen maar aangezien ik dit niet gebruik in mijn asp code, kan ik er niet aan.
En als ik volgende toevoeg:

<Columns>
<asp:BoundColumn HeaderText="Index" ItemStyle-Width=2%/>
<asp:BoundColumn HeaderText="Doss." />
<asp:BoundColumn HeaderText="Bedrijf" />
<asp:BoundColumn HeaderText="Naam, Voornaam" />
<asp:BoundColumn HeaderText="Bedrijf tel" />
<asp:BoundColumn HeaderText="Bedrijf fax" />
<asp:BoundColumn HeaderText="Bedrijf gsm" />
<asp:BoundColumn HeaderText="Contact tel" />
<asp:BoundColumn HeaderText="Contact fax" />
<asp:BoundColumn HeaderText="Contact gsm" />
<asp:BoundColumn HeaderText="Cat" />
</Columns>

Kan ik wel de breedte aanpassen maar dan toont hij 1) de gegevens van de dataset en ernaast 2) de kolommen opgegeven in de ASP.NET code.
Het leek me simpel maar ik heb het gevoel dat ik iets verkeerd doe en dat iemand me in de goede richting kan wijzen.

Dus welke control neem ik best (datagrid, gridview...) en hoe vul ik dit best op met het oog op het wijzigen van de breedte en het toevoegen van de hyperlinks.
Het is ook enkel TONEN dat ik wil dus niet toevoegen en/of wijzigen en/of verwijderen.

Alvast bedankt,
M81
 
Repeater

Als je enkel data wil tonen zou ik een Repeater Control gebruiken.
Met een Repeater kun je precies definiëren welke HTML wordt uitgespuugd, de repeater genereert dus geen extra code.
Een Datagrid heeft als doel om data te tonen en biedt tevens de mogelijkheid om functionaliteit toe te voegen om de data te bewerken.
Hiervoor wordt extra code gegenereerd (HTML en javascript), daarbij wordt de viewstate ook nog groter wat bij een repeater niet het geval is.

<asp:Repeater runat="server" ID="rptData">
<HeaderTemplate>
<table>
<tr>
<td class="ietsjeBreder">headertext 1</td>
<td>headertext 2</td>
<td>headertext 3</td>
<td class="ietsjeBreder">headertext 4</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("Bedrijf").ToString() %></td>
<td><%# Eval("Naam").ToString() %></td>
<td><%# Eval("Telefoon").ToString() %></td>
<td><%# Eval("Fax").ToString() %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
 
Dag Myclos81,

laatste tijd heb ik hier heel vaak mee te maken gehad, het meest handige en mooie vond ik om een GridView te gebruiken. Bijvoorbeeld:

HTML:
<asp:GridView ID="grdCustomer" runat="server" AutoGenerateColumns="false" OnRowDataBound="grdCustomer_OnRowDataBound"">
                            <Columns>
                                <asp:BoundField DataField="Index" HeaderText="Index" HeaderStyle-CssClass="HeaderStyle"
                                    ItemStyle-CssClass="TableContent" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"
                                    HeaderStyle-Width="10%" ItemStyle-Width="10%" />
                                <asp:BoundField DataField="Doss." HeaderText="Doss." HeaderStyle-CssClass="HeaderStyle"
                                    ItemStyle-CssClass="TableContent" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"
                                    HeaderStyle-Width="15%" ItemStyle-Width="15%" />
                            </Columns>
                        </asp:GridView>

Vervolgens op de rowDatabound methode kun je data manipuleren en dus ook bijvoorbeeld een link toevoegen aan de desbetreffende cel in de row. Voor de column met de naam zal dit dus 3 zijn in de collectie cellen.

Je kan het ook op de oude manier doen, maar je moet dan opletten dat je niet alleen de breedte van de items zet. Ook de HeaderStyle-Width moet gezet worden naar hetzelfde percentage!

Vriendelijke groet,

Bart
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan