.NET checkboxlist controls aanpassen

Pagina: 1
Acties:

  • guanpedro
  • Registratie: Maart 2002
  • Laatst online: 18-12-2025

guanpedro

Live forever or die trying

Topicstarter
Ik heb een CheckBoxList die gebindt wordt aan een DataTable met data uit een database.

Nu wil ik in de checkboxlist een spacer kunnen toevoegen; dus een lege regel tussen twee van de checkboxes in.

Mijn idee om dit te doen is in de database een leeg item toe te voegen. Dit lukt inzoverre dat de checkboxlist nu een checkbox bevat zonder tekst ernaast. nu wil ik dus die checkbox weg hebben. Helaas heeft de checkboxlist geen DataBound event waar je lekker met de controls kan spelen. Er is alleen een DataBinding event maar daar heb je geen toegang tot de controls zelf.

Ik heb geprobeerd met Page.FindControl( checkboxlist.ClientID + "_" + index.ToString ) het control op te sporen maar dit levert altijd null op.

Een colleagea had als tip een cssclass aan het juiste listitem te geven waarin hij niet zichtbaar zou zijn alleen als ik dat aan de Attributes collectie van het juiste listitem koppel zie ik dat niet meer terug in de uiteindelijke HTML source.

Iemand een idee hoe ik die checkbox kan vinden en laten verdwijnen?

PC: MSI-NEO2FISR P4-2.6HT@2.8 Dual-channel GEIL-PC3500 Intel CSA GB-LAN 9600PRO Pioneer DVR106 Server: Dual Xeon-2GHz 3Ware 7500-12 11x120GB RAID5 GB-LAN RH 9 2.4.22 Digicam: Sony DSC-F717


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan toch altijd nog gewoon door de CheckBoxList.Items heenlopen en deze wijzigen?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • guanpedro
  • Registratie: Maart 2002
  • Laatst online: 18-12-2025

guanpedro

Live forever or die trying

Topicstarter
Dat zijn ListItems, daarin heb je geen toegang tot de daadwerkelijk gegenereerde controls (de checkbox control) en kan je alleen maar de naam en waarde muteren en aangeven of deze selected is of niet.

PC: MSI-NEO2FISR P4-2.6HT@2.8 Dual-channel GEIL-PC3500 Intel CSA GB-LAN 9600PRO Pioneer DVR106 Server: Dual Xeon-2GHz 3Ware 7500-12 11x120GB RAID5 GB-LAN RH 9 2.4.22 Digicam: Sony DSC-F717


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Volgens mij snap ik dan nu even niet meer wat je dan precies wilt? Wil je de child controls van de CheckBoxlist hebben? Dan zou je door de Controls collection heen kunnen lopen?

Nu ik het nog een keer lees wil je gewoon dat je een lege regel tussen de Items van de Checkboxes krijgt. Kan je dit niet gewoon bereiken door gebruik te maken van Style attributen zoals margin en padding?

[ Voor 38% gewijzigd door Woy op 05-11-2003 14:27 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • guanpedro
  • Registratie: Maart 2002
  • Laatst online: 18-12-2025

guanpedro

Live forever or die trying

Topicstarter
Die lege regel moet niet voor elk item herhaald worden. Het moet vanuit een CMS beheerbaar zijn waar in de lijst die lege regel terechtkomt.

Vreemd genoeg heeft de checkboxlist na het databinden maar 1 control in zijn collectie, een checkbox, terwijl er een stuk of 30 getoond worden:

// Bind de waardes aan de lijst
cblCategories.DataSource = dtCategories;
cblCategories.DataTextField = "Name";
cblCategories.DataValueField = "CategoryID";
cblCategories.DataBind();

foreach( Control ctl in cblCategories.Controls )
{
Response.Write( ctl.GetType() );
}

Bovenstaande wordt in de Page_Load aangeroepen.

Het kan zijn dat ik hier nog te vroeg ben met het kijken in de contols collectie dus ik heb het foreach stuk in de PreRender van de CheckBoxList gezet maar daar komt hij zelfs nooit. Hiervoor gebruik ik normaal het DataBound event als het om een datagrid gaat.

Ik ga het proberen op te lossen via javascript met de clientID en index van het control.

PC: MSI-NEO2FISR P4-2.6HT@2.8 Dual-channel GEIL-PC3500 Intel CSA GB-LAN 9600PRO Pioneer DVR106 Server: Dual Xeon-2GHz 3Ware 7500-12 11x120GB RAID5 GB-LAN RH 9 2.4.22 Digicam: Sony DSC-F717


Verwijderd

Ik snap (na dit topic 3 keer te lezen) nog altijd niet goed wat het probleem is maar dit:
Mijn idee om dit te doen is in de database een leeg item toe te voegen.
Vind ik iig geen goed idee. Om een regel toe te voegen na elke regel kan je volgens mij beter een functie schrijven die een datatable returnt met lege regels ertussen:
Visual Basic .NET:
1
2
3
4
Public sub(byval origDatatable as datatable) as datatable 
   'zet er lege regeltjes tussen 
    return DatatableMetLegeRegeltjes
end sub

  • guanpedro
  • Registratie: Maart 2002
  • Laatst online: 18-12-2025

guanpedro

Live forever or die trying

Topicstarter
Verwijderd schreef op 05 november 2003 @ 15:09:
Om een regel toe te voegen na elke regel kan je volgens mij beter een functie schrijven die een datatable returnt met lege regels ertussen:
Visual Basic .NET:
1
2
3
4
Public sub(byval origDatatable as datatable) as datatable 
   'zet er lege regeltjes tussen 
    return DatatableMetLegeRegeltjes
end sub
Ik wil niet na elke regel een lege regel toevoegen. ik moet er op 30 items 1 of 2 kunnen toevoegen zodat de lijst gescheiden wordt en niet een lange lijst wordt. Dit moet voor de gebruiker beheerbaar zijn en dus uit de database komen.

Verder als je een rij toevoegt aan de datatable dan krijg je ook de loze checkbox en de clou is dus dat ik die checkbox niet wil zien, alleen de lege regel. Daarvoor moet je dus in de controls collectie gaan zitten maar daar kan ik juist niet bij.

PC: MSI-NEO2FISR P4-2.6HT@2.8 Dual-channel GEIL-PC3500 Intel CSA GB-LAN 9600PRO Pioneer DVR106 Server: Dual Xeon-2GHz 3Ware 7500-12 11x120GB RAID5 GB-LAN RH 9 2.4.22 Digicam: Sony DSC-F717

Pagina: 1