[ bokac @ 09.01.2005. 14:16 ] @
Molim za malu pomoc, u pitanju je ASP.NET i SQL Server.
Imam u bazi tip podatka "money", a u formi TextBox u koji korisnik unosi sumu (koju konvertujem u promenljivu tipa decimal) i to upisujem u bazu. Kako da formatiram da kada korisnik upise 10.05 to bude upisano kao 10,05 a ne kao 1005? Ukoliko korisnik unese nesto kao 10,05 izbaci exception. Molim za bilo kakav savet. Hvala.
[ dusty @ 09.01.2005. 19:05 ] @
Citat:
Kako da formatiram da kada korisnik upise 10.05 to bude upisano kao 10,05 a ne kao 1005? Ukoliko korisnik unese nesto kao 10,05 izbaci exception.


Ne bi trebao nista da formatiras 'ruchno', za to je regional settings. Konvertujes u decimal i to je to. Sta kaze debugger za te vrednosti posle konverzije ? Gde izbacuje exception, na update-u ?
[ bokac @ 10.01.2005. 08:27 ] @
Pa konvertujem ja u decimal, ali ako je korisnik uneo 10.5 u TextBox, vrednost koja se prosledjuje nakon konverzije je 105 ! A ukoliko unese 10,5 (zarez umesto tacke) pukne na update-u. Sve radi normalno ako prosledim string umesto decimal vrednosti, znaci npr. 10.5 se najnormalnije upisuje u bazu kao 10,5.
[ DarkoR @ 10.01.2005. 08:57 ] @
Exception je bacen kada pokusas da konvertujes 10,05 u double value.

Jedno od resenja je da subclassujes EditBox i implementiras validaciju i metodu koja ce da ti vraca string/double u zeljenom formatu...

Uostalom, potrazi malo (www.codeproject.com, www.codeguru.com) custom widgete, mozes da skines neke classe koje vec implementiraju slicnu stvar u C#-u...

Evo bas takve jedne controle
http://www.codeproject.com/cs/miscctrl/maskededit.asp

Pozdrav

Darko Radosavljevic
[ bokac @ 10.01.2005. 14:17 ] @
Hvala. Pozdrav.
[ ghost2k3 @ 06.09.2007. 12:38 ] @
(Znam da je tema stara, ali mozda nekom zatreba)
I mene je ovo zanimalo, a onaj mask input mi je delaovao previse komplikovano za nesto ovako jednostavno.
Pa sam resio problem na sledeci nacin:
napravio sam jednu jednostavnu f-ju koja ma sta korisnik uneo (10.05 ili 10,05) vraca uvek ono sto ti zelis.

Code:
private string stavi_tacku(string temp)
        {
            char[] separators = {'.',','};                        
            string[] niz;
            niz = temp.Split(separators);            
            return niz[0] + "." + niz[1];
        }

Meni je trebalo da se u bazu uvek unosi sa 10.05