[ASP.NET] DataGrid Kolom verbergen.

Pagina: 1
Acties:

  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
Ok ik heb de volgende situatie waar ik nog geen oplossing voor heb kunnen vinden:

Van mijn middenlaag krijg ik een dataset terug met een tabel. De kolommen kunnen elke keer totaal anders zijn. Echter ik weet in een aantal gevallen de naam van 1 van de kolommen. Namelijk contactid of accountid. Deze kolommen bevatten Guid waarden en zijn niet netjes om weer te geven. Dus ik wil deze kolom verbergen.

Echter omdat de kolommen gegenereerd worden at runtime heb ik geen toegang tot deze kolom via .Columns[i], dit levert namelijk een error op.

Hoe kan ik toch de kolom verbergen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Eenmaal die column gegenereerd is, kan je hem toch accessen via de Columns collectie? :?

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:18

gorgi_19

Kruimeltjes zijn weer op :9

Verder heeft je datagrid toch een datakeyfield? :?
whoami schreef op 13 januari 2004 @ 13:44:
Eenmaal die column gegenereerd is, kan je hem toch accessen via de Columns collectie? :?
Klopt, dat kan. Althans ,nog nooit problemen mee gehad. Je moet alleen er rekening mee houden dat het een 0-index array is :)

[ Voor 77% gewijzigd door gorgi_19 op 13-01-2004 13:47 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
Dat leek mij ook, maar ik krijg dan wel een error:
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

[ Voor 3% gewijzigd door hiostu op 13-01-2004 13:46 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:18

gorgi_19

Kruimeltjes zijn weer op :9

hiostu schreef op 13 januari 2004 @ 13:46:
Dat leek mij ook, maar ik krijg dan wel een error:


[...]
Hoeveel kolommen heb je? 5? Dan is de maximale index 4.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
hiostu schreef op 13 januari 2004 @ 13:46:
Dat leek mij ook, maar ik krijg dan wel een error:


[...]
Dan vermoed ik dat op dat moment de Columns nog niet bestaan.
Daarnaast heeft gorgi_19 wel een punt. Je kan de DataKeys collectie gebruiken om de primary key's in op te slaan.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
gorgi_19 schreef op 13 januari 2004 @ 13:45:

Klopt, dat kan. Althans ,nog nooit problemen mee gehad. Je moet alleen er rekening mee houden dat het een 0-index array is :)
Mja, dat ben ik gewoon. Echte talen hebben 0 -index arrays. :P

https://fgheysels.github.io/


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
gorgi_19 schreef op 13 januari 2004 @ 13:48:
[...]

Hoeveel kolommen heb je? 5? Dan is de maximale index 4.
Ja ik weet dat het 0 based is. Ik heb 6 kolommen en ik doe het op [1]. Op kolom [0] werkt het wel, maar dat is een kolom die ik zelf toegevoegd heb met de property builder

toevoeging: als ik de datakey gebruik wordt de kolom nog steeds getoond.

[ Voor 10% gewijzigd door hiostu op 13-01-2004 13:50 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Waar en wanneer lees je die columns collectie uit?

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:18

gorgi_19

Kruimeltjes zijn weer op :9

hiostu schreef op 13 januari 2004 @ 13:49:
toevoeging: als ik de datakey gebruik wordt de kolom nog steeds getoond.
Da's logisch, want als je datakeyfield gebruikt, hoef je de hele kolom niet te tonen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
whoami schreef op 13 januari 2004 @ 13:50:
Waar en wanneer lees je die columns collectie uit?
code:
1
2
3
4
SelectedReceiversList.DataSource = SelectedReceivers;
SelectedReceiversList.DataKeyField = "contactid";
SelectedReceiversList.DataBind();
SelectedReceiversList.Columns[1].Visible = false;

Dit moet toch kunnen.

Misschien een nuttige toevoeging:

Ik ben een uitbreiding op Microsoft CRM aan het maken. En ik doe een ExecuteQueryByID op het CRM object. Deze geeft een resultatenset terug in XML. Deze lees ik via een stringreader in welke ik gebruik om ReadXML te doen naar een dataset. De ExecuteQueryByID geeft ook nog een XML resultaat terug met daarin de kolommen, deze lees ik in via ReadXMLSchema. Van het laatste weet ik echter niet of dit kan en zin heeft.

[ Voor 39% gewijzigd door hiostu op 13-01-2004 13:57 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Ben je wel zeker dat je met die code alle columns te zien krijgt in je DataGrid?

Kijk eens hoeveel columns er zijn in je DataGrid (dmv de DataGrid.Columns.Count property). Als AutoGenerate Columns op False staat, dan zal je ze zelf nog moeten toevoegen:

code:
1
2
3
4
5
6
MyList.AutoGenerateColumns = false;

BoundColumn bc = new BoundColumn();
.....

MyList.Columns.Add (bc);

code uit de losse pols enzo

https://fgheysels.github.io/


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
Ja dit vind ik dus echt vreemd.

De columns.count is 1 :? terwijl ik toch echt minstens 6 kolommen op mijn scherm zie als ik het webform run. Op het scherm klopt het allemaal gewoon. Bij DataBind() genereert hij toch de kolommen (auto generate staat aan).

[ Voor 29% gewijzigd door hiostu op 13-01-2004 14:06 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:18

gorgi_19

Kruimeltjes zijn weer op :9

volgens mij voegt hij de autogenerated columns niet toe aan de columns collection; dat zou ook kunnen verklaren waarom autogenerated columns na de columns in de columnscollectie komen.

Wat je in principe doet is dat je de columnscollectie gaat benaderen; tsja, als de kolommen niet worden toegevoegd, kan ik me voorstellen dat je ze ook niet kan benaderen.

[ Voor 33% gewijzigd door gorgi_19 op 13-01-2004 14:08 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
gorgi_19 schreef op 13 januari 2004 @ 14:07:
volgens mij voegt hij de autogenerated columns niet toe aan de columns collection; dat zou ook kunnen verklaren waarom autogenerated columns na de columns in de columnscollectie komen.
Mmm dus het kan niet op deze manier. Is er wel een manier om bij de autogenerated columns te komen? Of zal ik ze zelf middels een functie moeten genereren aan de hand van de twee tabellen. Aangezien ik ook een dataset heb met de kolommen erin. Dit zal echter wel redelijk wat werk zijn.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:18

gorgi_19

Kruimeltjes zijn weer op :9

hiostu schreef op 13 januari 2004 @ 14:09:
[...]

Mmm dus het kan niet op deze manier. Is er wel een manier om bij de autogenerated columns te komen? Of zal ik ze zelf middels een functie moeten genereren aan de hand van de twee tabellen. Aangezien ik ook een dataset heb met de kolommen erin. Dit zal echter wel redelijk wat werk zijn.
Waarom veel werk? Lees de column names van de dataset uit in een loopje en voeg in een loopje dit toe aan de columns collectie. In ranzige vorm ongeveer 15 regels code.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
gorgi_19 schreef op 13 januari 2004 @ 14:11:
[...]

Waarom veel werk? Lees de column names van de dataset uit in een loopje en voeg in een loopje dit toe aan de columns collectie. In ranzige vorm ongeveer 15 regels code.
precies en dat met een deadline in het vooruitzicht ;), nou ja dan maar snel aan de gang. Ik hoopte eigenlijk dat VS hier zelf een oplossing voor bood.

  • Arethusa
  • Registratie: December 2003
  • Laatst online: 12:25

Arethusa

Niet die server

Je kunt misschien met boudcollumns gaan werken en visible op false zetten oid?

I've been mad for fucking years, absolutely years, been over the edge for yonks.
Vinyl: Discogs


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
Sieweshaoao schreef op 13 januari 2004 @ 14:18:
Je kunt misschien met boudcollumns gaan werken en visible op false zetten oid?
Nee want ik weet niet wat de geretourneerde colommen zullen zijn.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
hiostu schreef op 13 januari 2004 @ 14:20:
[...]

Nee want ik weet niet wat de geretourneerde colommen zullen zijn.
Hoezo? Je krijgt toch een DataTable terug? Een DataTable heeft een property Columns, en dat zijn je gereturnde kolommen.

https://fgheysels.github.io/


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
whoami schreef op 13 januari 2004 @ 14:22:
[...]


Hoezo? Je krijgt toch een DataTable terug? Een DataTable heeft een property Columns, en dat zijn je gereturnde kolommen.
sorry ik dacht dat er bedoeld werd om bound columns toe te gaan voegen met de property builder.

iig allemaal bedankt _/-\o_ , ik ga er gewoon zelf een functie voor schrijven

[ Voor 11% gewijzigd door hiostu op 13-01-2004 14:27 ]


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
gorgi_19 schreef op 13 januari 2004 @ 14:11:
Waarom veel werk? Lees de column names van de dataset uit in een loopje en voeg in een loopje dit toe aan de columns collectie. In ranzige vorm ongeveer 15 regels code.
15 regels code was nog erg veel ;)

code:
1
2
3
4
5
6
7
for(int i=0;i<DataSet.Tables[0].Columns.Count;i++)
{
    BoundColumn temp = new BoundColumn();
    temp.DataField = DataSet.Tables[0].Columns[i].ColumnName;
    temp.HeaderText = DataSet.Tables[0].Columns[i].ColumnName;
    DataGrid.Columns.Add(temp);
}


Misschien handig voor een ander ;)
Pagina: 1