Toon posts:

[asp.net] TextChanged event probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb op mijn site een aantal textboxen, met het textchanged event, in het besteloveloverzicht in de beheermodule.

De textchanged wordt geactiveerd zodra het aantal producten in de bestelling wordt gewijzigd. Er wordt dan een functie aangeroepen die controleerd of er nog genoeg producten voorradig zijn. Zo ja, np, zo niet dan haalt hij de originele waarde uit database en zet die terug in de textbox.

Nu zit er een rarigheidje in en ik kan hem niet vinden...
Als ik twee waardes van hetzelfde product (er kunnen meerdere van dezelfde worden besteld, mits ze een andere behandeling hebben) aanpas, dan veranderd hij toch de andere waardes ook, terwijl het textchanged even van die textbox niet is aangeroepen?

Dus stel:
Product X heeft een voorraad van 6
in de bestelling staat:
X - aantal 2
X - verzilveren - aantal 3

Dat moet gemuteerd worden naar:
X - aantal 1
X - verzilveren - aantal 8
(dit kan uiteraard niet omdat de voorraad niet voldoet)

Ik verander eerst 2 naar 1, dat gaat prima
dan verander ik 3 naar 8, dat mag niet omdat de voorraad dan niet voldoet.
Hij veranderd dan perfect de 8 terug naar 3, maar hij voert dan ook nogmaal het textchanged event uit van de eerste textbox?
Hij ziet dan dat er 9 besteld staan, vind dat niet goed en veranderd de 1 terug naar zijn originele 2?!?!

De bedoeling is dus dat alleen de 8 terug wordt gezet naar de 3 en de andere textboxen met rust gelaten worden...

Heeft dit te maken met het textchanged event? "Onthoudt" hij events op de een of andere manier?

(Ik hoop dat het een beetje duidelijk is, de code is 970 regels dus een beetje veel om te posten :( )

[ Voor 4% gewijzigd door Verwijderd op 25-04-2003 13:46 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan je textchanged methode toch wel even posten??
(Ik hoop dat het een beetje duidelijk is, de code is 970 regels dus een beetje veel om te posten )
Want ik mag hopen dat je niet 1 methode van 970 regels hebt.

“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.”


Verwijderd

Topicstarter
hehehe true :)

De textbox (word dynamisch gemaakt & in placeholder gestopt)
code:
1
2
3
4
5
6
7
8
9
10
11
12
'#maak textbox aan
dim tb_toeslag as New Textbox()
tb_toeslag.id = "tb_"& reader_specialbestel.item("specialbestelling_id")
tb_toeslag.visible="true"
tb_toeslag.text = reader_specialbestel.item("aantal")
tb_toeslag.Maxlength = 10
tb_toeslag.columns = 5
tb_toeslag.cssClass = "input_blueborder"
tb_toeslag.enabled = "false"
tb_toeslag.autoPostBack = "true"
addHandler tb_toeslag.TextChanged, AddressOf tb_berekentoeslag_changed
tb_toeslag.Attributes.Add("OnKeyPress", "filterDigits();")


de sub:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
sub tb_berekentoeslag_changed( sender as object, e as Eventargs )
    lbl_page_error.Text = ""
    
    'Zoek de geklikte control op in de placeholder
    dim tb_zoek as TextBox
    tb_zoek = ph_artikel_overzicht.findcontrol( CType(sender, Textbox).ID )
    'Strip het id van de gevonden control, zodat het specialbestelling_id overblijft
    dim specialBestelling_string as String = ""
    dim specialBestelling_id as Integer = 0
    'beetje ugly, maar wel safe
    try 
        specialBestelling_string = replace( CType(sender, Textbox).ID.ToString, "tb_", "" )
        specialBestelling_id = cInt(specialBestelling_string)
    catch exp As Exception
        'conversie fout
        'lbl_page_error.Text = "Conversie fout<br>Error: "& exp.toString
        exit sub
    end try
    
    'Toon melding bij evt tekort aan voorraad
    if valideer_voorraad(specialBestelling_id, 0) = "false" then
        'oude getal terug zetten
        dim query_orig_aantal = "select aantal from specialbestelling where specialbestelling_id ="& specialBestelling_id &" and toeslag_id <> 0"
        dim obj_orig_aantal as new OdbcCommand( query_orig_aantal, objConn )
        dim reader_orig_aantal as OdbcDataReader
        objConn.open()
        reader_orig_aantal = obj_orig_aantal.ExecuteReader()
            if not reader_orig_aantal.read() = nothing then
                tb_zoek.Text = reader_orig_aantal.item("aantal")
            end if
        reader_orig_aantal.close()
        objConn.close()
    end if
    
    'opmaak van bedragen
    dim opmaak as System.Globalization.NumberFormatInfo 
    opmaak = new System.Globalization.NumberFormatInfo() 
    opmaak.CurrencyDecimalSeparator = "."
    opmaak.CurrencyGroupSeparator =""
    opmaak.CurrencySymbol =""
    
    'haal het juiste label erbij om het bedrag in te zetten
    dim lbl_toeslag_bedrag as label
    lbl_toeslag_bedrag = ph_artikel_overzicht.findcontrol( "lbl_toeslag_bedrag_"& specialBestelling_id )
    dim lbl_toeslag_totaal as label
    lbl_toeslag_totaal = ph_artikel_overzicht.findcontrol( "lbl_toeslag_"& specialBestelling_id )
    
    If Not tb_zoek is Nothing AND not lbl_toeslag_totaal is nothing then
        lbl_toeslag_totaal.Text = String.Format(opmaak, "{0:c}", ( convert.toDouble(lbl_toeslag_bedrag.Text, opmaak ) * convert.toDouble( tb_zoek.Text, opmaak ) ) )
    End if
    
    herbereken_totaal_bedrag()
end sub


Dit is de "trigger" de andere aangeroepen functions lezen verder alleen maar waardes uit en veranderen niets.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 22-08 10:45

mulder

ik spuug op het trottoir

Weet niet precies wat je bedoeld, maar het TextChanged event word volgens mij pas getriggerd na de postback. Wat jij denk ik wil bereiken kan veel beter met javascript (clientside).

Wat voor editor gebruik je btw, je code is nogal slordig, oa door inconsequent gebruik van hoofd en kleine letters.

oogjes open, snaveltjes dicht


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:19
Don Facundo schreef op 25 April 2003 @ 18:37:
Weet niet precies wat je bedoeld, maar het TextChanged event word volgens mij pas getriggerd na de postback. Wat jij denk ik wil bereiken kan veel beter met javascript (clientside).
Hmmm.... Volgens mij niet.
Als de text veranderd is, dan wordt dat event getriggerd, en gebeurt er juist een postback dacht ik....
* whoami heeft nu echter geen tijd om het ff uit te proberen.

https://fgheysels.github.io/


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 22-08 10:45

mulder

ik spuug op het trottoir

Getest en er gebeurt gelukkig geen postback: dat zou niet echt prettig zijn voor elke letter die je typt..

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
TextChanged event word volgens mij pas getriggerd na de postback
MSDN: The TextChanged event is raised when the content of the text box changes between posts to the server.

Wat ik vreemd vind is dat hij wel direct als ik het veld verlaat een response.write neerzet... dat zou ook niet mogen dan toch?

En wat ik nog vager vind is dat als ik een tweede textbox aanpas hij de textchanged van de bovenstaande & eerder gewijzigde textbox eerst uitvoert.
Het lijkt wel of hij het event "onthoud" en herhaald
Pagina: 1