fiveAT
Messages postés4Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention16 août 2007
-
14 août 2007 à 15:57
fiveAT
Messages postés4Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention16 août 2007
-
16 août 2007 à 14:40
Bonjour,
Je suis débutant en ASP.NET. J'utilise Visual Studio 2005 Standard et je code en VB.
Mon problème est le suivant: j'ai un gridview alimenté par ma base de données SQL Express. L'affichage est ok mais j'aimerais qu'à l'impression les lignes ne puissent pas être à cheval sur 2 pages...
J'ai essayé de lier mon contrôle à une CSS avec une classe du type:
body
{
}
.ligne
{
page-break-inside:
avoid;
}
<
asp
:
GridView
ID
="GridView1"
runat
="server"
AutoGenerateColumns
="False"
DataKeyNames
="dos_id"
DataSourceID
="SDSTableau"
Width
="100%"
AllowSorting
="True"
Font-Names
="Arial"
Font-Size
="8pt"
CssClass
="ligne">
<
Columns
>
<
asp
:
TemplateField
HeaderText
="Agc"
SortExpression
="dos_agence">
<
EditItemTemplate
>
<
asp
:
TextBox
ID
="TextBox1"
runat
="server"
Text
='
<%# Bind("dos_agence") %>
'></
asp
:
TextBox
>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp
:
Label
ID
="Label1"
runat
="server"
OnDataBinding
="Label1_DataBinding"
Text
='
<%# Bind("dos_agence") %>
'></
asp
:
Label
>
</
ItemTemplate
>
</
asp
:
TemplateField
>
<
asp
:
BoundField
DataField
="dos_faire"
HeaderText
="A faire..."
SortExpression
="dos_faire"
/>
...
</
Columns
>
<
RowStyle
VerticalAlign
="Middle"
Wrap
="True"/>
<
HeaderStyle
BackColor
="#002E6E"
Font-Bold
="True"
Font-Names
="Arial"
Font-Size
="9pt"
ForeColor
="White"
Height
="50px"
HorizontalAlign
="Center"
VerticalAlign
="Middle"
/>
</
asp
:
GridView
>
Mais cela ne fonctionne pas...
Y'a-t-il une solution à mon problème sans changer de type de contrôle? Etant plus que débutant en CSS, est-ce que l'appel à ma classe "ligne" est correct?
zuff
Messages postés79Date d'inscriptionlundi 28 octobre 2002StatutMembreDernière intervention21 octobre 2008 16 août 2007 à 10:10
Je viens de vérifier sur mon 0'reilly sur les CSS, la propriété page-break-inside ne fonction que sur des éléments type "bloc" et je ne suis pas sur que le tr n'est pas de type bloc.
Essaye de mettre ta class dans ton ItemStyle (et HeaderStyle) de tes TemplateField.
le problème vient que le page-break-inside est d'une utilisation hasardeuse.
fiveAT
Messages postés4Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention16 août 2007 16 août 2007 à 14:40
Je confirme ce que je craignais plus haut. C'est IE qui pose problème. Les tests avec FireFox, Opera et Netscape ont tous fonctionné avec la simple indication:
tr
{
page-break-inside: avoid;
}
dans ma CSS sans autre lien avec mon contrôle GridView.
zuff
Messages postés79Date d'inscriptionlundi 28 octobre 2002StatutMembreDernière intervention21 octobre 2008 16 août 2007 à 09:22
CssClass
="ligne"
serait mieux dans RowStyle.
Car actuellement la classe est pour le GridView
entier et non pour une ligne donc il essaye que le gridview tienne sur une page si il ne peut pas il n'en tiens pas compte de ton saut page alors que si tu le place sur le rowstyle, cela fonctionnera pour chaque ligne séparement.
fiveAT
Messages postés4Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention16 août 2007 16 août 2007 à 10:48
Il semble que page-break-inside ne soit pas appliqué de toute façon... J'ai mis d'autres paramètres dans ma classe (genre: text-decoration: underline;) et ils s'appliquent sans problème (ça n'est donc pas un problème de lien avec la CSS). De plus, en passant par le générateur de style de Visual Studio, il n'est fait mention nulle part de page-break-inside alors qu'on y trouve page-break-after et page-break-before.
Je crois qu'il faut que je me fasse une raison...
Merci de ton aide en tout cas et si tu as d'autres propositions, c'est volontiers!