Avatar billede jespera Nybegynder
28. juli 2005 - 16:15 Der er 34 kommentarer og
1 løsning

Repeater og brug af CustomValidator i denne

Hej Alle,

Har et lidt underligt problem.

Jeg har en Repeater på min siden. I den repeter er der en checkbox og et felt.
Hvis checkbox er valgt skal min customvalidator så checke om textbox er udfyldt.
Hvis feltet ikke er udfyldt skal den sætte en * ved den textbox som ikke er udfyldt.

Men men, hvis en fejler i validereingen så får alle textboxe, dvs alle bliver market med en stjerne.....??

Så hvordan sikrer man sig at kun en textbox får sat en * hvis den ikke opfylder valideringen.....

Nedenstående er fra min repeater:

<ItemTemplate>
    ................
    <td>
        <asp:CheckBox id="chkSelected" runat="server" enabled="true"  />
    </td>
    <td>
        <asp:TextBox id="txtNumbers" runat="server" enabled="true" Text='' Style="Width:100px"/>
        <asp:CustomValidator runat="server" id="CustomValidatorChk" ErrorMessage=" *" Display="Dynamic" OnServerValidate="CustomValidatorCheckedAndFilled" />
    </td>
....
</ItemTemplate>

Nedenstående er fra min custom validator

private void CustomValidatorCheckedAndFilled(object sender, ServerValidateEventArgs e)
{
    foreach ( RepeaterItem repeaterItem in repeater1.Items )
    {
        CheckBox chkBox = (CheckBox) repeaterItem.FindControl("chkSelected");
        TextBox txtBox = (TextBox) repeaterItem.FindControl("txtNumbers");
       
        if(chkBox.Checked)
            if (txtBox.Text == "")
                e.IsValid = false;
    }
}
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:22 #1
er clientside du får markeret fejlene ?
mvh
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:23 #2
(hmmm - der skulle have stået "er DET clientside du får markeret fejlene ?") :o)
mvh
Avatar billede jespera Nybegynder
28. juli 2005 - 16:26 #3
jeps når jeg trykker på min videre knap.......
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:31 #4
du can starte med at slå clientside-valideringen fra - bare lige for at checke om din servervalidering kører som den skal.
det er bare EnableClientScript="False"
mvh
Avatar billede jespera Nybegynder
28. juli 2005 - 16:35 #5
Hvor planter man den henne, altså

EnableClientScript="False"
Avatar billede jespera Nybegynder
28. juli 2005 - 16:36 #6
Ups.....på customvalidator....
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:37 #7
jeps - lige præcis :o)
mvh
Avatar billede jespera Nybegynder
28. juli 2005 - 16:37 #8
Nu er den sat på customvalidator element.....

Men den gør stadigvæk den samme
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:38 #9
hov - du skal nok lige explicit :

if(chkBox.Checked)
  if (txtBox.Text == "")
    e.IsValid = false;
  else
    e.IsValid = true;

mch
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:41 #10
nej vent ... det er ikke godt nok - default til true i starten istedet:

    foreach ( RepeaterItem repeaterItem in repeater1.Items )
    {
        e.IsValid = true;
        CheckBox chkBox = (CheckBox) repeaterItem.FindControl("chkSelected");
        TextBox txtBox = (TextBox) repeaterItem.FindControl("txtNumbers");
       
        if(chkBox.Checked)
            if (txtBox.Text == "")
                e.IsValid = false;
    }

mvh
Avatar billede jespera Nybegynder
28. juli 2005 - 16:42 #11
jeps er nu gjort, men alle bliver stadigvæk markeret......
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:43 #12
er det denne :
28/07-2005 16:38:40 // duer ikke ... det var mig der pappede mig - sorry.

eller denne
28/07-2005 16:41:03 // bedre chance for at den holder :o)

du har brugt?

mvh
Avatar billede jespera Nybegynder
28. juli 2005 - 16:47 #13
28/07-2005 16:38:40 // duer ikke ...

28/07-2005 16:41:03
Når en chkbox er checked og der ikke er udfyldt noget i feltet og jeg så trykker videre kan jeg gå videre selvom der ikke er fyldt noget i feltet.....Det er forkert :-)

Hvis chkbox er valgt SKAL feltet være udfyldt for at gå videre :-)
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:53 #14
hmmm... det synes jeg også 28/07-2005 16:41:03 burde gøre :

foreach ( RepeaterItem repeaterItem in repeater1.Items )
{
  // som udgangspunkt er alt iorden
  e.IsValid = true;
 
  CheckBox chkBox = (CheckBox) repeaterItem.FindControl("chkSelected");
  TextBox txtBox = (TextBox) repeaterItem.FindControl("txtNumbers");
 
  // hvis checkboxen er checked
  if(chkBox.Checked)
  {
    // og der ikke står noget i tekstboksen
    if (txtBox.Text.Trim().Length < 1)
    {
      // er det ikke godt nok alligevel - hvilket er det eneste tilfælde
      e.IsValid = false;
    }
  }
}

mvh
Avatar billede snepnet Nybegynder
28. juli 2005 - 16:54 #15
jeg har lavet denne
if (txtBox.Text.Trim().Length < 1)
istedet ... bare for en sikkerheds skyld... så vi ikke bliver snydt ;o)
mvh
Avatar billede jespera Nybegynder
28. juli 2005 - 17:29 #16
hmmm jeg gå videre selvom checkbox er checked og indput felt ikke er udfyldt stadigvæk ??
Avatar billede snepnet Nybegynder
28. juli 2005 - 17:36 #17
hm... du må debugge lidt, og se hvad der egentlig sker.... kan du ikke sætte et breakpoiont i starten af metoden, og så se hvad der foregår?
mvh
Avatar billede snepnet Nybegynder
28. juli 2005 - 17:36 #18
hvordan ser den metode ud du kører når du klikker på knappen? - det kan jo være der problemet ligger.
mvh
Avatar billede jespera Nybegynder
28. juli 2005 - 18:11 #19
Okay, jeg poster lige coden senere eller imorgen tidlig - Vi får nemlig gæster og dem kan man jo ikke bare smide ud :-) heheh

Hej så længe og tak for hjælpen så langt......
Avatar billede snepnet Nybegynder
28. juli 2005 - 18:43 #20
bare iorden ... vi skrives ved imorgen :o)
- go' aften!
mvh
Avatar billede jespera Nybegynder
29. juli 2005 - 09:11 #21
hmmm ved ik hvormeget jeg skal poste....starter lige med det....

Men når jeg trykker på den knap "videre" så bliver flg funktioner udført

private void btnSubmitNextPage3 (object sender, System.EventArgs e)
{
    if (Page.IsValid)
    {
        Trace.Write("next page 3 clicked");
        panelStep1.Visible = false;
        panelStep2.Visible = false;
        panelStep3.Visible = true;
        panelStep4.Visible = false;
    }
}
Avatar billede jespera Nybegynder
29. juli 2005 - 10:33 #22
......

Det kan også være der er noget andet der er lettere at bruge en end repeater. Det jeg skal bruge er i første omgang:

Navne fra en database som bliver loadet via en StoredProcedure......

Så skal et grid bygges med de navne. Griddet skal indeholde per navn:

1 checkbox
1 navnet
1 texbox

Validering
Så hvis checkbox er checket skal der være udfyldt noget i textboxen for at gå videre (textbox må kun indeholder tal).
Der skal minumum være 1 check checket for at gå videre....

Hvis du har et eksempel på det som er lettere at bruge og er mere fleksibel en repeateren er det perfekt. Jeg har desværre ikke så meget kendskab til de andre endnu. Så jo mere feedback jo bedre....

Jeg smider extra points i puljen hvis du komme med en bedre fremgangsmåde....

Takker
Avatar billede jespera Nybegynder
29. juli 2005 - 13:56 #23
Hmm gad vide om du kommer med et svar idag :-)
Avatar billede snepnet Nybegynder
29. juli 2005 - 14:07 #24
sorry ... er først kommet til orglet nu.
mvh
Avatar billede snepnet Nybegynder
29. juli 2005 - 14:15 #25
Ok - så har jeg kigge på hvad du skrev :o)

Først kunne jeg godt tænke mig lige at høre om valideringen gør som den skal nu - og hvis ikke, om du så har kigget på denne :
28/07-2005 17:36:43

Jeg har lavet et forslag til et "wizard-system" herude tidligere... Det prøver jeg lige at finde frem.

mvh
Avatar billede snepnet Nybegynder
29. juli 2005 - 14:50 #26
pyh.... det er ikke udpræget nemt at finde noget herude :o(
her : http://www.eksperten.dk/spm/519579
mvh
Avatar billede jespera Nybegynder
01. august 2005 - 09:24 #27
28/07-2005 17:36:43:

Hvilken form form for breakpoint skal jeg lave?
Avatar billede snepnet Nybegynder
01. august 2005 - 10:18 #28
der er kun en slags breakpoints... du kan indsætte dem ved at trykke F9, og så starte applikationen med F5.
mvh
Avatar billede jespera Nybegynder
01. august 2005 - 10:36 #29
Ja det ved jeg godt. Men det er ikke en Visual Studio Project. :-)

Det er en webprojekt. Jeg bruger en ganske alm. text editor.
Avatar billede snepnet Nybegynder
01. august 2005 - 10:54 #30
jeg bliver nødt til at løbe nu, og der kan godt gå et stykke tid før jeg svarer igen.

visual studio er ikke nogen forudsætning for at debugge mv.... det kan man godt gøre uden. der findes nogle tutorials på nettet omkring det.

søg f.eks. sammen med webmatrix, så tror jeg der kommer noget frem - ellers er der tidligere postet links til det herude.

men - pointen er at du bliver nødt til at checke hvad der sker i dine rutiner, så du kan se hvad det er der går galt.

mvh
Avatar billede jespera Nybegynder
01. august 2005 - 11:01 #31
ok sikke en skam :-) troede lige vi kunne lukke det spg. Nå men det er der jo ikke noget at gøre ved....
Avatar billede snepnet Nybegynder
07. august 2005 - 00:46 #32
halløjsa - så er jeg tilbage :o)
- hvordan går det med det?
mvh
Avatar billede snepnet Nybegynder
07. september 2005 - 16:59 #33
jespera - how goes?
(du får et svar her hvis du vil lukke)
mvh
Avatar billede snepnet Nybegynder
01. november 2005 - 21:23 #34
jespera?
Avatar billede jespera Nybegynder
22. marts 2006 - 20:41 #35
hej, jeg lukker langt om længe :-) tusind tak for din hjælp.....
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