Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[asp.net] Breedte op het scherm van een gridview column

Pagina: 1
Acties:

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 14:29

sopsop

[v] [;,,;] [v]

Topicstarter
Ik ben momenteel bezig met een custom gridview server control. Daarin heb ik een aantal export mogelijkheden ingebouwd, zoals naar excel, word en PDF. Dat werkt allemaal uitstekend. Alleen loop ik tegen een probleem aan met de export naar PDF.

Ik gebruik hiervoor de Gios PDF Library. Hierin zit de mogelijkheid om een tabel direct uit een datatable te vormen. Ook dat werkt allemaal prima. Hij maakt een datatable van de inhoud van de gridview en zet die netjes in een table in het nieuwe PDF-document. Daarbij houdt hij rekening met columns waarbij visible=false, en met de alignment van de column.

Mijn probleem is het instellen van de breedte van de kolom. An sich gaat dit prima met de Gios PDF Library, je kunt per kolom een relatieve breedte instellen. Ik loop echter tegen een probleem aan indien de column geen breedte in de definitie heeft staan. Aangezien ik een generiek control aan het maken ben, wil ik niet afdwingen dat de gebruiker dit moet doen. Zeker niet aangezien de automatische breedte instelling van de gridview columns prima is.

Ik moet nu dus de breedte van een column ophalen zoals die op het scherm getoond wordt.

De volgende properties van de gridview leveren geen breedte op:
C#:
1
2
unit a = gridview1.Columns[0].ItemStyle.Width;
unit a = gridview1.Rows[1].Cells[i].Width;


Iemand een idee hoe ik de schermbreedte van een column kan ophalen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:48

gorgi_19

Kruimeltjes zijn weer op :9

Niet. Of de browser rendert de zaken naar eigen inzicht, of de css gaat dat oplossen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • D-Raven
  • Registratie: November 2001
  • Laatst online: 16-10 10:47
Ik heb zelf nooit op die manier met gridView gewerkt. Maar als die properties niet gevuld zijn in de PreRender fase van je page zoals gorgi_19 suggereert.
Dan zul je ze breedte zelf moeten berekenen. Je zou de breedte van de kolom kunnen laten bepalen aan de hand van de lengte van de data in de kolom. Of je stelt je houd de lengte van de kolom header-text aan en wrapped de data in de kolom zelf.

Het berekenen van de lengte van een string kun je bv met Graphics.MeasureString() doen.

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 14:29

sopsop

[v] [;,,;] [v]

Topicstarter
Helaas. Ik ben nu met een enigzins werkbare variant op de proppen gekomen.

Indien de breedte van een gridview is opgegeven wordt er bij iedere kolom gekeken of er een breedte is ingesteld voor die kolom. Die breedtes worden bij elkaar opgeteld en afgetrokken van de breedte van de gridview. De overgebleven breedte wordt gelijk verdeeld over de kolommen die geen breedte instellingen hebben. A.d.h.v. de breedte van de gridview wordt de breedte van alle kolommen omgezet in een percentage van de breedte van de gridview.

Op die manier kun je dus de breedte van een enkele kolom regelen in de gridview door wat eenvoudige (en tevens standaard) instellingen te wijzigen (die ook runtime gedaan kunnen worden), en dat zonder dat je daarvoor alle kollommen moet instellen.

En het werkt - iig in mijn geval - perfect.