Bootstrap Twitter et ASP.NET GridView

je vais avoir aproblem à l'aide de Twitter Bootstrap de mon ASP.NET application. Lorsque j'utilise le table table-striped classe css à mon asp:GridView contrôle il traite de la en-Tête de la table comme un Ligne.

My GridView

ASP.NET MarkUp

<asp:GridView ID="dgvUsers" runat="server" 
    CssClass="table table-hover table-striped" GridLines="None" 
    AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="UserID" HeaderText="ID" Visible="false" />
        <asp:BoundField DataField="Username" HeaderText="Username" />
        <asp:BoundField DataField="FirstName" HeaderText="First Name" />
        <asp:BoundField DataField="LastName" HeaderText="Last Name" />
    </Columns>
    <RowStyle CssClass="cursor-pointer" />
</asp:GridView>

Résultat

Header treated as a row

<table id="cphMainContent_dgvUsers" class="table table-hover table-striped" 
       cellspacing="0" style="border-collapse:collapse;">
    <tbody>
        <tr>
            <th scope="col">Username</th>
            <th scope="col">First Name</th>
            <th scope="col">Last Name</th>
        </tr>
        <tr class="cursor-pointer">
            <td>user1</td>
            <td>Test</td>
            <td>User 1</td>
        </tr>
        <tr class="cursor-pointer">
            <td>user2</td>
            <td>Test</td>
            <td>User 2</td>
        </tr>
        <tr class="cursor-pointer">
            <td>user3</td>
            <td>Test</td>
            <td>User 3</td>
        </tr>
    </tbody>
</table>

il devrait être comme ce

It should be like this

<table class="table table-striped">
    <thead>
        <tr>
            <th>#</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Username</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>Mark</td>
            <td>Otto</td>
            <td>@mdo</td>
        </tr>
        <tr>
            <td>2</td>
            <td>Jacob</td>
            <td>Thornton</td>
            <td>@fat</td>
        </tr>
        <tr>
            <td>3</td>
            <td>Larry</td>
            <td>the Bird</td>
            <td>@twitter</td>
        </tr>
    </tbody>
</table>



Comment puis-je faire l'en-tête de mon asp:GridView être traité comme un en-tête par Twitter Bootstrap? Mon code est en C#, framework 4, de construire dans VS2010 Pro.

38
demandé sur Kiquenet 2012-09-11 07:31:25

4 réponses

Vous devez définir useaccessibleheader attribut de gridview à true et puis aussi spécifier un TableSection pour être une tête à la suite de l'appel de la DataBind() méthode sur votre objet GridView. Donc, si votre grille est mygv

mygv.UseAccessibleHeader = True
mygv.HeaderRow.TableSection = TableRowSection.TableHeader

il devrait en résulter une grille formatée correctement avec thead et tbody les balises

47
répondu hazem 2017-12-28 14:22:58

Il y a 2 étapes pour résoudre ce problème:

  1. Ajouter UseAccessibleHeader="true" pour Gridview balise:

    <asp:GridView ID="MyGridView" runat="server" UseAccessibleHeader="true">
    
  2. ajouter le Code suivant au PreRender événement:


Protected Sub MyGridView_PreRender(sender As Object, e As EventArgs) Handles MyGridView.PreRender
    Try
        MyGridView.HeaderRow.TableSection = TableRowSection.TableHeader
    Catch ex As Exception
    End Try
End Sub

note définir la ligne D'en-tête dans DataBound() ne fonctionne que lorsque l'objet est databound, tout autre postback qui ne databind the gridview se traduira par le retour du style de ligne d'en-tête gridview à une ligne standard. Pré-rendu fonctionne à chaque fois, assurez-vous de avoir une capture d'erreur pour quand le gridview est vide.

6
répondu Shaun Keon 2016-09-08 18:31:46

juste pour info, j'ai eu des borders dans la table et pour m'en débarrasser j'ai dû mettre les propriétés suivantes dans GridView:

GridLines="None"
CellSpacing="-1"
3
répondu rageit 2016-02-25 20:18:34

ajouter la propriété de l'en-tête show dans gridview

 <asp:GridView ID="dgvUsers" runat="server" **showHeader="True"** CssClass="table table-hover table-striped" GridLines="None" 
AutoGenerateColumns="False">

et dans les colonnes ajouter le modèle d'en-tête

<HeaderTemplate>
                   //header column names
</HeaderTemplate>
0
répondu user3775539 2018-04-20 15:07:34