Avatar billede websam Nybegynder
02. september 2006 - 21:25 Der er 9 kommentarer og
1 løsning

Loop igennem checklistbox ?

Hejsa,

Jeg har checklistbox som jeg vil loope igennem for at se om der er valgt nogle. Det jeg skal frem til er at der minimum skal være valgt minimum en, men hvordan bære jeg mig lige ad, indtil videre har jeg følgende :

for (int i = 0; i < CheckBoxListRoles.Items.Count; i++)
{
    //Her mangler jeg lige noget der tjekker om der er valgt en
}

Nogen der kan hjælpe mig igennem med det sidste ?

/Websam
Avatar billede dj_uncas Nybegynder
02. september 2006 - 21:32 #1
Du kan gøre således:


foreach( ListItem item in CheckBoxListRoles.Items )
{
    if( item.Selected )
    {
        //Din kode
    }
}
Avatar billede websam Nybegynder
02. september 2006 - 21:45 #2
Ok så tager jeg lige det hele med i det du foreslår :

string ErrorHeader = Resources.Default.ErrorHeadline;
string ErrorMessage = null;
foreach (ListItem item in CheckBoxListRoles.Items)
{
    if (!item.Selected)
    {
        ErrorMessage = "<b>" + ErrorHeader + "</b><br />" + Resources.Membership.ErrorRoles;
    }
}

if (ErrorMessage != null)
{
    LabelError.Text = ErrorMessage;
    LabelError.Visible = true;
}

Som du kan se skal jeg blot smide en fejl besked hvis der ikke er valgt nogen, men eftersom den looper igennem listen vil den jo skrive fejlen ud hvis bare en i listen ikke er valgt ?

/Websam
Avatar billede dj_uncas Nybegynder
02. september 2006 - 21:49 #3
Så lav den således:

bool anyChecked = false;
foreach (ListItem item in CheckBoxListRoles.Items)
{
    if (item.Selected)
    {
        anyChecked = true;
        break;
    }
}

if( !anyChecked )
{
    LabelError.Text = String.Format( "<b>{0}</b><br />{1}", ErrorHeader, Resources.Membership.ErrorRoles );
    LabelError.Visible = true;
}
Avatar billede thrytter Nybegynder
02. september 2006 - 21:51 #4
eller

private bool IsCheckboxListSelected(CheckBoxList cb)
{
  foreach(ListItem item in cb.Items)
  {
    if (item.Selected)
      return true;
  }           
  return false;
}

Funktion som returnerer true, hvis der er valgt en eller flere og false hvis der ikke er valgt nogle.

if (!this.IsCheckboxListSelected(this.CheckBoxListRoles))
{
  LabelError.Text = ErrorMessage = "<b>" + ErrorHeader + "</b><br />" + Resources.Membership.ErrorRoles;
  LabelError.Visible = true;
}
Avatar billede websam Nybegynder
02. september 2006 - 22:08 #5
dj_uncas >> Så er der kun lige en ting tilbage, hvis jeg lader være at vælge nogle i min list kommer den med fejl, hvilket den jo også skal.

Vælger jeg så en i min liste forsvinder fejlen ikke igen hvad kan jeg lige gøre der ?

/Websam
Avatar billede websam Nybegynder
02. september 2006 - 22:11 #6
Never mind jeg satte LabelError.Visible = false; og det virker super smid et svar ;o)
Avatar billede dj_uncas Nybegynder
03. september 2006 - 00:12 #7
Den skulle også meget gerne holde på teksten. Det er ViewState der kommer ind i billedet.

Der er flere måder at ordne det på. At sætte Visible til false er et meget godt bud, at sætte Text til String.Empty også god. Måske er Visible = false bedst da du så også fjerne det ligegyldige HTML <span></span>...
Avatar billede websam Nybegynder
03. september 2006 - 01:41 #8
Ja men jeg har ikke viewstate på nogle af mine labels så visible = false blev løsningen ;o)
Avatar billede dj_uncas Nybegynder
03. september 2006 - 14:32 #9
Har du explicit sat EnableViewState til false på dine Labels? Ellers er der default
ViewState...
Avatar billede websam Nybegynder
03. september 2006 - 21:08 #10
Jeg sætter viewstate="false" på alle de controls hvor jeg ikke skal bruge det da det ellers kan blive et problem set med SEO øjne.

/Websam
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester