Toon posts:

[ASP.NET] DataColumn aanmaken in code behind

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een datagrid aanmaken waar ik het aantal kolommen (allemaam itemtemplate met 3 checkboxes in) dynamisch wil bepalen op basis van een getal dat ik uit de database haal.

In de MSDN vind ik wel dat je Datagrid.Columns.Add() kunt doen en je dan een DataColumn kunt toevoegen, maar ik vind nergens deftige informatie over hoe je een datacolumn in de codebehind opbouwt zodat het de nodige elementen (3 checkboxes dus) bevat.

Kan iemand me vertellen hoe dit moet? In de aspx zelf is het niet mogelijk omdat ik daar niet kan "loopen" om het correcte aantal kolommen aan te maken.

  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
Kijk eens hier: [google=datagrid add column dynamically]

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:58
Je kan toch gewoon een TemplateColumn maken ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
OK dit is nu gelukt maar ik blijf met 1 probleem zitten.

De kolommen bevatten elk 3 checkboxes die al dan niet aangevinkt staan, afhankelijk van wat in de dataset staat.

Als ik een normale datagrid gebruik om de dataset weer te geven dan zie ik goed "TRUE" en "FALSE" in de juiste kolommen (dit zijn strings, geen booleans).

Als ik echter in mijn TemplateColumn bij de instelling van mijn checkbox
code:
1
Checked='<%# DataBinder.Eval(Container.DataItem, "Datum_0_1") %>'

doe, dan krijg ik 'cast is nog valid' als error. Nochthans is het resultaat van die databinder wel degelijk TRUE of FALSE.

Ik heb geen idee waar deze fout aan ligt aangezien dit gebaseerd is op een voorbeeld uit een boek.

Dit is ongeveer het voorbeeld waarover ik praat:
http://www.c-sharpcorner.com/Code/2003/June/DataGridAndCheckBoxes.asp

Ik kan echter geen bit-resultaten maken aangezien ik de resultaten in mijn query zelf ingeef (dus niet uit de database), en dus geen type toegekend hebben.
(Ik gebruik nl. een case die 'TRUE' terug stuurt als er voldaan aan is. Ik kan dit veranderen naar '1' maar dan is dit nog steeds geen bit-value)

[ Voor 30% gewijzigd door Verwijderd op 13-07-2005 21:19 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:58
DataBinder.Eval returned dan ook geen boolean, maar een object.
Wat gebeurt er als je die cast expliciet gaat uitvoeren ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op woensdag 13 juli 2005 @ 21:19:
DataBinder.Eval returned dan ook geen boolean, maar een object.
Wat gebeurt er als je die cast expliciet gaat uitvoeren ?
Ik heb geprobeert door er gewoon (bool) voor te plaatsen maar dit had niet veel effect. Ik veronderstel dat ik binnen de <%# %> wel een if-statement kan gaan plaatsen etc. maar dan wordt het toch wel niet efficient meer. Ik denk dat er wel betere methodes moeten bestaan (zoals in de link)

Verwijderd

Topicstarter
Ondertussen is het opgelost. Blijkbaar bestaat in SQL CAST(... AS TYPE). Hiermee heb ik de cast naar een bit uitgevoerd en lukt het.

Er is nu nog een probleem. Sommige medewerkers in mijn rooster werken reeds ergens anders mee. Dat moet in dat rooster zichtbaar zijn, maar niet bewerkbaar. Daarom heb ik een sql-query nodig dat dit bepaalt. Hiervoor zou ik graag informatie opvragen uit een andere kolom van diezelfde query, maar hoe doe je dit?

(ik bedoel dus SELECT Username AS TEST, Pasword..., CASE WHEN TEST = 'tweaker' THEN...)

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:58
Verwijderd schreef op vrijdag 15 juli 2005 @ 20:58:
(ik bedoel dus SELECT Username AS TEST, Pasword..., CASE WHEN TEST = 'tweaker' THEN...)
Kijk eens naar het CASE keyword in de T-SQL help.
Maar, waarom haal je niet alle nodige columns op, en bepaal je in je applicatie wat je wil tonen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op vrijdag 15 juli 2005 @ 21:01:
[...]


Kijk eens naar het CASE keyword in de T-SQL help.
Maar, waarom haal je niet alle nodige columns op, en bepaal je in je applicatie wat je wil tonen.
Ik gebruik CASE heel vaak in deze query maar daarmee kan ik naar mijn weten enkel verwijzen naar waarden uit een database. Niet naar custom waarden uit een aangemaakt tabel.

(Stel ik heb een deel van een select statement als volgt: SELECT Voornaam + ' ' + Achternaam AS Naam,... dan wil ik verder in dat statement de waarde uit dat Naam-veld kunnen opvragen om dan te kijken of ik nog een extra berekening moet laten doen)

Het feit dat ik niet gewoon alles uit de database haal is omdat ik een dataset gebruik en niet goed ben in manipuleren van gegevens in een dataset, ik heb ze er dus liever meteen correct in.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:58
Verwijderd schreef op vrijdag 15 juli 2005 @ 21:08:
[...]

Ik gebruik CASE heel vaak in deze query maar daarmee kan ik naar mijn weten enkel verwijzen naar waarden uit een database. Niet naar custom waarden uit een aangemaakt tabel.
Je kan dat toch zo doen:
code:
1
2
3
4
5
6
7
SELECT 'MyCustomColumn' = 
                     CASE 
                        WHEN testcolumn = 1 THEN column1
                        WHEN testcolumn = 2 THEN column2
                        ELSE column3
                     END CASE
FROM tabel

https://fgheysels.github.io/

Pagina: 1