Toon posts:

[ASP.net/C#]-Header/itemstyle-borderwidth=0 -> wel borders?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een Datagrid, waarbij ik de header een border wil geven en de items niet. Dit leek me vrij straightforward, maar het werkt niet. Als ik het volgende instel:

ASP:
1
2
3
<asp:DataGrid id="DataGrid1" runat="server" Visible="False" HeaderStyle-BorderWidth="0px" 
ItemStyle-BorderWidth="0px" CellPadding="0" CellSpacing="0" AllowSorting="True" 
AutoGenerateColumns="False">

.. krijg ik wel borders te zien! Het maakt niet uit wat ik daar invul, er komen altijd borders. In de htmlcode van de datagrid staat doodleuk borders=1.

Ik heb hier gezocht, maar niets gevonden. Op google kon ik ook niets vinden m.b.t. dit probleem, bij alle sites die ik vind werkt het volgens mij wel gewoon.

Ik gebruik dus allemaal templatecolumns, in de headers definieer ik geen headerstyle. Dit kan het dus ook niet zijn.

Wat doe ik fout? Mijn excuses als het een domme fout van me is, maar ik heb al een tijdje van alles geprobeerd, maar het werkt gewoon niet.

[ Voor 14% gewijzigd door Verwijderd op 14-10-2005 11:52 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Meest eenvoudige oplossing: Voeg de css zelf toe met de Style-property Style of een CssClass voor de elementen en style ze zelf.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op vrijdag 14 oktober 2005 @ 12:01:
Meest eenvoudige oplossing: Voeg de css zelf toe met de Style-property Style of een CssClass voor de elementen en style ze zelf.
Laten we dat eens gaan proberen... Toch vind ik het raar dat het niet op mijn manier werkt, is dit een bug in ASP of zo?

Verwijderd

Topicstarter
*Kick* niemand anders een oplossing?

  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
Heeft het niet te maken met gridlines:

code:
1
<asp:datagrid GridLines="None" />

Verwijderd

Topicstarter
Shir schreef op zaterdag 15 oktober 2005 @ 21:13:
Heeft het niet te maken met gridlines:

code:
1
<asp:datagrid GridLines="None" />
Ik heb nu het volgende:
ASP:
1
2
3
<asp:DataGrid GridLines=None id="IssuesDataGrid" runat="server" Visible="False" 
AutoGenerateColumns="False" AllowSorting="True" CellSpacing="0" CellPadding="0" 
HeaderStyle-BorderWidth="1">

Dit wordt hierdoor gegenereerd:
HTML:
1
2
3
<table cellspacing="0" cellpadding="0" border="0" id="IssuesDataGrid" style="border-collapse:collapse;">
<tr class="gridHeader" style="border-width:1px;border-style:solid;">
...

Maar de style in de header overruled de border="0" niet, lijkt me gewoon een bug... Als ik HeaderStyle-BorderWidth weghaal, same problem.
gorgi_19 schreef op vrijdag 14 oktober 2005 @ 12:01:
Meest eenvoudige oplossing: Voeg de css zelf toe met de Style-property Style of een CssClass voor de elementen en style ze zelf.
Als ik in de asp geen border opgeef, komt in de html toch border=1 te staan bij het table-element... Ik heb dit in mijn css-staan: .gridHeader { border-color: Blue}, just as test. In de html wordt automatisch aan de class property van de headers de naam gridHeader toegekend. Waarom wordt de border van de header dan niet blue?

[ Voor 46% gewijzigd door Verwijderd op 17-10-2005 13:17 ]


Verwijderd

Topicstarter
Laatste poging... Als ik dus niets zeg over de borders, worden ze 0, zoals in de post hieronder vermeld De headerrows hebben als class gridHeader, hoe zou ik daar de border ook in kunnen stellen?

in mijn css heb ik dus staat:

.gridHeader { border-width: medium; border-color: Blue}

Maar dit overruled dus de border=1 in <table> niet... Beetje vaag allemaal, maar volgens mij is het gewoon niet mogelijk wat ik wil 8)7

[ Voor 3% gewijzigd door Verwijderd op 18-10-2005 12:57 ]


  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
Hiermee krijg ik keurig alleen op mijn header een border:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<style>
table#dataGrid1 {
    border-collapse: collapse;
}
tr.test td {
    border: 1px solid black;
}
</style>
...
<asp:DataGrid id="dataGrid1" runat="server"
          GridLines="None"
          CellPadding="0"
          CellSpacing="0"
          borderWidth="0"
          HeaderStyle-CssClass="test"
 />

Verwijderd

Topicstarter
Ik snap niet waarom het bij mij niet werkt :? Ik heb nu de css uitgezet, de style-tags in de header gezet:

HTML:
1
2
3
4
5
6
7
8
<style>
table#IssuesDataGrid {
    border-collapse: collapse;
}
tr.test td {
    border: 1px solid black;
}
</style>

.. en deze datagrid code:

ASP:
1
2
3
4
5
6
7
<asp:DataGrid id="IssuesDataGrid" runat="server"
    GridLines="None" CellPadding="0"
    CellSpacing="0" borderWidth="0"
    HeaderStyle-CssClass="test" AllowSorting="True"
    Visible="False" AutoGenerateColumns="False">
<!-- columns e.d. -->
</asp:DataGrid>

En wat denk je? Totaal geen borders...

/Edit: nou, dat headerstyle-cssclass werkt mooi niet. Er komt nog gewoon tr class="gridHeader" te staan. Als ik dat aanpas, gaat het wel goed :) Er komen nu wel iets te veel borders, maar dat gaan we nog even oplossen:)

[ Voor 43% gewijzigd door Verwijderd op 18-10-2005 13:43 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:34

crisp

Devver

Pixelated

Een border toekennen aan een TR-element is ook compleet zinloos; Een TR is enkel een containing element voor table-cells en heeft in feite verder geen zichtbare eigenschappen (achtergrondkleur is een uitzondering). Dit zal dus nooit kunnen werken in HTML:
HTML:
1
2
3
4
5
6
<table border=0>
    <tr class="gridHeader" style="border: 1px solid black">
        <td>cell 1</td>
        <td>cell 2</td>
    </tr>
</table>

Wat wel werkt is dit (in CSS):
Cascading Stylesheet:
1
2
3
table tr.gridHeader td {
    border: 1px solid black;
}

Overigens gaan CSS-rules altijd voor op HTML style-attributen. De laatste zijn derhalve ook veelal deprecated.

Intentionally left blank


Verwijderd

Topicstarter
Ja, het werkt nu wel inderdaad. Probleem is echter dat IN de headercellen weer nieuwe tables staan... Deze krijgen ook deze rand, waardoor ik een dubbele rand krijg :( Aangezien dit 'children' zijn van de header-row, kan ik hier de border niet uitzetten. Hoe zou ik dit kunnen oplossen?

In de headercellen staan enkele elementen, zoals een headertext, een dropdownlist en 2 sorteerknoppen. Hierom heb ik er een nieuwe table van gemaakt, het lijkt prima als die randen maar uitstaan :).

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:34

crisp

Devver

Pixelated

Normaal gesproken zou je dat in CSS dan zo doen:
Cascading Stylesheet:
1
2
3
table tr.gridHeader>td {
    border: 1px solid black;
}

ware het niet dat IE de child-selector nog niet snapt :P
workaround zou dan zoiets zijn:
Cascading Stylesheet:
1
2
3
4
5
6
table tr.gridHeader td {
    border: 1px solid black;
}
table tr.gridHeader td td {
    border: none;
}

Intentionally left blank


Verwijderd

Topicstarter
@Crisp: Je bent geweldig _/-\o_ Ik zit niet zo in css (sowieso niet echt in design :X ), maar het werkt nu wel!
Pagina: 1