Help proprietà oggetti

mercoledì 28 gennaio 2004 - 12.35

cnnmax Profilo | Junior Member

Ciao a tutti.
Ho creato un componente MytextBox ereditato da System.Web.UI.WebControls.TextBox.

Ho aggiunto una proprietà RifValue dove registro un valore che poi devo salvare sul database.

Mi sapete dire perchè il valore memorizzato viene perso?

Grazie a tutti

Brainkiller Profilo | Guru

Come hai creato la proprietà ?
Sai che di solito c'è una Set e una Get, la prima per impostare il valore, la seconda per restituirlo. In mezzo c'è sempre una variabile di supporto all'interno della classe che deve memorizzare il valore.
Copio e incollo dal Framework:

Class Class1
' Define a local variable to store the property value.
Private PropertyValue As String
' Define the property.
Public Property Prop1() As String
Get
' The Get property procedure is called when the value
' of a property is retrieved.
Return PropertyValue
End Get
Set(ByVal Value As String)
' The Set property procedure is called when the value
' of a property is modified.
' The value to be assigned is passed in the argument to Set.
PropertyValue = Value
End Set
End Property
End Class

Come vedi la variabile PropertyValue è quella che mantiene il valore della proprietà. Prova a controllare.
ciao
david

cnnmax Profilo | Junior Member

Si ho fatto tutto bene.

Public Class MytextBox
Inherits System.Web.UI.WebControls.TextBox

Private _ValueDB As String = "''"

Public Property ValueDB() As String
Get
Return _ValueDB
End Get

Set(ByVal Value As String)
_ValueDB = Value
End Set

End Property

end class

Solo che nella funzione dove setto la proprietà funziona, nella funzione dove vado a leggerla mi restituisce sempre stringa vuota. :-(

Brainkiller Profilo | Guru

A questo punto allora direi che dovresti farti una bella sessione in debug, e controllare step by step cosa succede. E molto semplice creare una proprietà mi pare strano che tu perda il valore in mezzo.
ciao
david

cnnmax Profilo | Junior Member

Non so se è corretto, ma sembra funzionare
Ho una funzione javascript che aggiorna il valore della proprietà:

In javascript:

function Myfunction_onBlur(obj)
{
obj.myProperty = "100";
}

La funzione è lanciata all'evento "onBlur" della casella di testo.

Un altra funzione lanciata all'evento onfocus:

function Myfunction_onfocus(obj)
{
obj.value = obj.myProperty
}

mi legge il valore memorizzato precedentemente.
E fin qui tutto sembra funzionare.

Quando creo la stringa SQL da iviare al DB e vado a leggere da il valore della proprietà ho una stringa vuota. :-(

Ripeto non so se è corretto quello che ho fatto, ma a livello client sembra funzionare bene
forse con javascript non posso lavorare in queto modo?

Grazie


Brainkiller Profilo | Guru

Attenzione! Qui c'è una cosa fondamentale stai confondendo ambienti d'esecuzione clientside e server side. Da Javascript non puoi accedere a metodi e proprietà degli oggetti scritti in codice C# o VB.NET che girano Server Side...

Con Javascript c'è un Object Model particolare con oggetti i quali hanno le loro proprietà ma sono diversi dagli oggetti .NET e quindi non puoi accedere a quel modo.

ciao
david

cnnmax Profilo | Junior Member

Si ho confuso un po le cose.
Ma non capisco perchè la funzione lato client riesce a memorizzare il valore in una proprietà di un oggetto textbox. che poi riesco a leggere sempre lato client.

In pratica quando esco da un textbox formattato il campo in formato euro usando javascript mentre quando ci rientro devo eliminare la formattazione per poter inserire solo numeri.
Per fare ciò mi conservo il valore senza formattazione in una proprietà del textbox quando esco dal campo mentre quando ci rientro riassocio al value del textbox il valore memorizzato nella proprietà.

- Formatta in campo
function EuroFormat(obj)
{
obj.ValueDB = obj.value;
.
.
}
- Elimina la formattazione
function EliminaEuroFormat(obj,ValDB)
{
if (obj.ValueDB == "")
obj.value = ValDB;
else
obj.value = obj.ValueDB ;
}

ValueDB è la proprietà che ho aggiunto al textbox.
funziona tutto considera che ho + campi importo e ognuno conserva il proprio valore.

Una domanda. devo per forza utilizzare javascript per poter fare questo tipo di operazioni.
Come anche per i messaggi, devo inventarmi sempre qualcosa per inserire codice javascript al PostBack della pagina per avere messaggi di errore.

Grazie di tutto.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5