VisualBasic Inhalt eines Labels ansprechen

:benny:

Ensign
Registriert
Sep. 2009
Beiträge
183
Hallo,

ich würde gerne den Inhalt eines Labels in eine .txt Datei speichern.
Leider weiß ich aufgrund mangelnder Kenntnisse bezüglich VB nicht, wie ich diesen Inhalt ansprechen kann.
Mit Label.text funktioniert es zumindest nicht; die Textdatei bleibt leer.

Code:
Dim wr As New IO.StreamWriter("Y:\Eigene Dateien\test.txt", False)

            wr.WriteLine(hiddenLbl.Text)
            wr.Close()

Den Inhalt einer Textbox kann ich ohne Probleme mit .Text ansprechen und abspeichern.
Wie funktioniert das also mit den Labels?
 
Verwende Label.Caption.

Willkommen in der wunderbaren Welt von VB, wo die prinzipiell selbe Eigenschaft je nach Control immer unterschiedlich heißt (zB Text, Content & Caption). =)
 
Mhh das funktioniert leider nicht da caption anscheinend "kein Member von System.Web.UI.WebControls.Label" ist.

Das selbe mit content.

Wenn ich hingegen Label.Text verwende wird mir kein solcher Fehler angezeigt, die Textdatei bleibt halt nur leer.

Ich wollte das eigentlich nur als Übergangslösung verwenden da ich ursprünglich den Inhalt eines normalen HTML iFrames per Button-Click als Datei speichern wollte.

Da mir dies auch nicht gelungen ist habe ich den Inhalt des Frames erst an die TextBox/ das Label übertragen und dann abgespeichert.
 
Ok, du verwendest wohl VB.Net. Caption gab es damals bei VB6, Text heißt es bei VB.Net.

Ich hab nach dem StreamWriter gegoogelt und der Code sieht auf dem ersten Blick ok aus. Ich vermute also, dass gar nichts im Label drin steht und er daher nichts in die Datei schreibt.
 
Label.Text ist schon das richtige Property.
So wie du dein Problem beschreibst, scheitert es momentan wohl am Page-Lifecycle.
Wann setzt du Label.Text und wie? Die gleiche Frage nochmal für das Speichern.
Das Label ist in deiner ASPX definiert oder fügst du es per Code hinzu?

Der Code, den du gepostet hast, ist fehlerfrei und hilft auch nicht sonderlich weiter :)

Edit.
Nur so eine Vermutung. Dein Label heißt ja hiddenLbl. Hast du die Visibility auf false gesetzt?
Falls ja, kannst du zuweisen, was du willst, das Element wird in diesem Fall nicht gerendert. Für diesen Fall solltest du ein HiddenField benutzen.
 
Zuletzt bearbeitet:
Das Label ist in meiner .aspx definiert, ja.
Ich habe im Grunde zwei Buttons: Einen zum Übertragen des Inhalts des iFrames in das Label. Diese Funktion habe ich mit Javascript wie folgt umgesetzt:

Code:
function sendToLabel() 
    {
        document.getElementById('hiddenLbl').innerText = document.getElementById('iView').contentWindow.document.body.innerText;
    }

iView ist hierbei der iFrame, hiddenLbl das Label.

Der Inhalt des Save-Buttons ist im ersten Code zu sehen.

Ich weiß schon das das irgendwie ein ziemliches Durcheinander und nicht gerade ideal ist.

Edit:
Nur so eine Vermutung. Dein Label heißt ja hiddenLbl. Hast du die Visibility auf false gesetzt?
Falls ja, kannst du zuweisen, was du willst, das Element wird in diesem Fall nicht gerendert. Für diesen Fall solltest du ein HiddenField benutzen.
Ja das ist mir auch schon aufgefallen. Die Visibility ist auch wieder auf true gesetzt. Nur der Name ist noch geblieben.
 
Zuletzt bearbeitet:
Ja OK.
Du weist dem Label clientseitig Text zu und verlangst, dass der Server dann weiß was du getan hast? :)

Ersetz das Label durch ein HiddenField und benutze das Property Value. Bei einem Postback gelangen so auch clientseitige Manipulationen zum Server.
Alternativ kannst du auch alles serverseitig machen. Dazu einfach dem Frame eine ID geben und runat="server" setzen.
 
Ok das klappt jetzt so. Danke schonmal.
Habe dem iFrame die Tags ID und runat gegeben.
Jetzt müsste ich nur wissen, über welchen Befehl ich an den Text innerhalb des Frames rankomme (handelt sich um eine Art WYSIWYG-Editor).

Das funktioniert ja nicht so einfach mit .Text .
 
Da musst du dich jetzt leider selbst durch MSDN kämpfen und dir anschauen, welches Property was zurückgibt. Habe die leider selber nicht alle im Kopf ;)
 
Zurück
Oben