25 messaggi dal 30 ottobre 2011
ciao,
vorrei assegnare ad una variabile javascript del file miofile.aspx il valore di una variabile vb del file miofile.aspx.vb.
secondo voi è possibile? se sì come?
ho fatto un po' di ricerche e alcuni dicono che la variabile javascript vada definita come segue, ma non mi funziona.

variabileJS=('<%=variabileVB%>')

cosa sbaglio?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao & benvenuto nel forum!

sì, il codice che hai trovato è corretto. Farei solo due piccoli ritocchi, perché le parentesi non sono necessarie ed è buona norma aggiungere un punto e virgola alla fine della riga. Metti pure un var all'inizio, per giusta misura :)

var variabileJS='<%=variabileVB%>';

A scanso di equivoci... questa linea va messa all'interno di un tag <script type="text/javascript"> che puoi avere nel body o nella head della pagina.

Quando apri la pagina nel browser, vai a visualizzare il sorgente html così ti rendi conto di che cosa sia stato prodotto da Asp.Net.
Se, per esempio, hai valorizzato variabileVB con un testo che contiene l'apice allora è un problema perché questo carattere è usato come qualificatore di stringa in quel comando javascript, e bisogna farne l'escape \'

ciao
Modificato da BrightSoul il 30 ottobre 2011 19.00 -

Enjoy learning and just keep making
25 messaggi dal 30 ottobre 2011
Grazie per i consigli, ma nonostante tutto ho questo tipo di errore

Errore di compilazione

Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.

Messaggio di errore del compilatore: BC30451: Nome 'luogo' non dichiarato.

Errore nel codice sorgente:


Riga 34:
Riga 35: function initialize(){
Riga 36: var variabileJS='<%=luogo%>';
Riga 37: alert();
Riga 38: }


nel file segnalazioni.aspx.vb la dichiarazione di luogo l'ho fatta al Page_Load in questo modo, giusto per provare

Dim luogo As String = "testo"

in cosa sbaglio?
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
dichiara la variabile luogo fuori dal Page_Load. Così facendo diventa un "campo" ed esiste per tutto il ciclo di vita della pagina. Poi la valorizzi nel Page_Load.

Protected luogo As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    luogo = "Testo"
End Sub


ciao

Enjoy learning and just keep making
25 messaggi dal 30 ottobre 2011
Ciao!
Grazie mille! Funge!

mi scuso, ma ho un'altra domanda è possibile passare i valori di un DataTable ad una variabile in JavaScript.
Insomma quel che vorrei fare è popolare una GoogleMaps con differenti marker prendendo i dati da DB.
Quindi avrei bisogno di fare un ciclo for in Javascript tipo questo qui:

var markers = valoriDataTable;
for (var i = 0; i < markers.length; i++) {
var descrizione = markers[i].getAttribute("descrizione");
var luogo = markers[i].getAttribute("luogo");
var tipo = markers[i].getAttribute("tipo");
var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lon")));
var marker = createMarker(point, descrizione, luogo, tipo);
map.addOverlay(marker);
}

Questo è una porzione di codice per creare i marker multipli prendendo i dati da un file xml creato da vb con i dati del DataTable. Ma purtroppo ho dovuto rinunciarci perchè non si è capito perchè con JS non riesco a leggere il file xml.
11.886 messaggi dal 09 febbraio 2002
Contributi
FRAx85 ha scritto:

Ma purtroppo ho dovuto rinunciarci perchè non si è capito perchè con JS non riesco a leggere il file xml.


beh, jQuery è in grado di interpretare l'xml... questo è il metodo che potresti usare
http://api.jquery.com/jQuery.parseXML/
(ma leggere l'xml con una richiesta ajax sarebbe una scelta migliore, perché puoi cachare i dati in maniera autonoma rispetto alla pagina).

Sei pratico di jQuery? Se no potresti anche farne anche a meno. Non sei obbligato a lavorare con xml anche se capisco che è molto semplice generare xml quando si ha a che fare con le DataTable.

Invece potresti formattare i dati nella notazione javascript.
var markers = [{luogo:'Roma', lat:41.896655, lon:12.495918, tipo:'A' },{luogo:'Bologna', lat:44.512176, lon:11.336059, tipo:'B'}];

Puoi produrre quell'output grazie ad un Repeater, impostando la sua proprietà .DataSource sul datatable e poi invocando .DataBind(). Qui trovi un esempio:
http://www.aspitalia.com/script/302/Data-Binding-ADO.NET.aspx
Mi rendo conto che a prima vista è un po' incasinato ma approssimativamente sarà più o meno così
var markers = [<asp:Repeater id="dati" runat="server"><ItemTemplate>{luogo:'<%# Eval("luogo") %>', lat:<%# Eval("lat") %>, lon:<%# Eval("lon") %>, tipo:'<%# Eval("tipo") %>'}</ItemTemplate><SeparatorTemplate>,</SeparatorTemplate></asp:Repeater>];


Di sicuro non ti funzionerà al primo colpo perché ci sono degli accorgimenti da prendere, tipo che il separatore dei decimali deve essere il punto anziché la virgola, poi va fatto l'escape degli apici, e così via. Tieni aperta la console di sviluppo Javascript per capire quali errori si verificano (F12 su Internet Explorer, Ctrl+Shift+J su Firefox e Chrome).

ciao,
Modificato da BrightSoul il 30 ottobre 2011 21.02 -

Enjoy learning and just keep making
25 messaggi dal 30 ottobre 2011
Gentilissimo! Grazie mille! ci lavoro un po'.
25 messaggi dal 30 ottobre 2011
Ho provato a fare come mi dicevi... e ovviamente ho dei problemi. :)
nella pagina miofile.aspx ho un problema con il repeater

var markers = [<asp:Repeater id="queryres" runat="server">....]
proprio sul "<" indicando che è "prevista un'espressione"

inoltre sul file miofile.aspx.vb dove vado ad interrogare il database e ad effettuare il data binding sul controllo repeater mi viene segnalato un errore in quanto non è stato dichiarato il queryres (ho seguito la guida che mi hai indicato).
Uso un database MySQL, non vorrei che il problema fosse dovuto a questo.
Dim cn As New MySqlConnection(cntxt)
        'Oggetto command per mysql 
        Dim cm As New MySqlCommand("SELECT luogo, descrizione, tipo, lat, lon FROM segnalazioni", cn)
        Dim mydata As New DataTable


        Try
            'Apertura della connessione 
            cn.Open()
            'Esecuzione della query di inserimento 
            Dim myAdapter As New MySql.Data.MySqlClient.MySqlDataAdapter
            myAdapter.SelectCommand = cm
            'myAdapter.Fill(mydata)

            ' creo il dataset
            Dim querydataset As DataSet = New DataSet()
            myAdapter.Fill(querydataset)

            ' effettuo il data binding sul controllo repeater
            queryres.DataSource = querydataset
            queryres.DataBind()

        Catch ex As Exception
            MsgBox(String.Format("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace), , "Errore di connessione al database")
        Finally
            If cn.State = Data.ConnectionState.Open Then
                cn.Close()
            End If
        End Try


sapresti dirmi come venirne fuori?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.