Laden...

FreeTextBox höhe dynamisch anpassen

Erstellt von marv100 vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.488 Views
M
marv100 Themenstarter:in
227 Beiträge seit 2008
vor 14 Jahren
FreeTextBox höhe dynamisch anpassen

Hallo zusammen,

ich habe mal eine Frage zu der FreeTextBox. Ich lade dort einen Text und möchte die Höhe der FTB dynamisch anpassen, so dass ich keinen Scrollbalken mehr habe. Weiß jemand von euch wie ich das machen kann?

Gruß
marv100

**"Niemand wird je mehr als 640KB RAM benötigen!" **

Bill Gates, 1981

1.433 Beiträge seit 2006
vor 14 Jahren

Clientseitig mit Javascript (JQuery). Du kannst dann den Style overflow:hidden setzen, dann werden die Scrollbalken nicht mehr angezeigt, aber unter Umständen auch nicht mehr der ganze Text. Daher würde ich die TextBox mit einer CSS-Klasse verbinden und dann über JQuery die Textboxes suchen und die Höhe dynamisch auf dem Client anpassen.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

M
marv100 Themenstarter:in
227 Beiträge seit 2008
vor 14 Jahren

Mit Javascript hab ich mir schon gedacht, nur wie mach ich das? Hab schon die Textbox mit Javascript gefunden aber die Höhe passt irgendwie nicht bzw ich finde in den Eingeschaften nicht die richtige.
Weder clientHeight oder offsetHeigt, beide werte sind zu klein.

**"Niemand wird je mehr als 640KB RAM benötigen!" **

Bill Gates, 1981

1.433 Beiträge seit 2006
vor 14 Jahren

Wenn Du mit Javascript die TextBox mit document.getElementById('TextboxId') gefundent hast, dann solltest Du mit dem gefundenen objekt und height arbeiten können.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

M
marv100 Themenstarter:in
227 Beiträge seit 2008
vor 14 Jahren

Ja die Höhe kann ich dann bearbeiten nur wie hoch soll ich den Wert setzten? Ich muss den ja so hoch setzten bis der Scrollbalken verschwunden ist. Wie regel ich das denn?

**"Niemand wird je mehr als 640KB RAM benötigen!" **

Bill Gates, 1981

1.433 Beiträge seit 2006
vor 14 Jahren

Wenn Du den Text in ein String Array liest, dann kannst Du die Lenght des Arrays nehmen und diese dann der Height der TextBox zuweisen.


    <script type="text/javascript" language="javascript">
        var textbox = document.getElementById("<%= TextBox1.ClientID %>");
        function OnGetContent() {
            textbox = document.getElementById("<%= TextBox1.ClientID %>");
            PageMethods.GetContent(OnSuccededGetContent, OnErrorGetContent);
        }

        function OnSuccededGetContent(result, usercontext, methodname) {
            var height = result.length;
            textbox.value = result;
            textbox.style.overflow = "hidden";
            textbox.style.height = height * 100;
        }

        function OnErrorGetContent(usercontext, result, methodname) {

        }
    </script>

Hier noch die eher unspektakuläre Webmethode.


        [WebMethod]
        public static string[] GetContent()
        {
            string[] names = new string[] { "Müller", "Meier", "Maurer", "Bader", "Räuber" };
            return names;
        }

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

M
marv100 Themenstarter:in
227 Beiträge seit 2008
vor 14 Jahren

ja damit komm ich der Sache schon näher. Allerdings funktioniert die mal 100 nicht. Wenn ich einen Text mit 6000 Zeichen hab und das noch * 100 nehmen... das ist zu viel.
Wie bekomm ich das denn besser hin? Habs jetzt mit height / 3.5; versucht. Nur was passiert wenn dort mehr Textumbrüche drin sind? Dann geht die Rechnung nicht mehr auf.

**"Niemand wird je mehr als 640KB RAM benötigen!" **

Bill Gates, 1981

1.433 Beiträge seit 2006
vor 14 Jahren

Das * 100 ist auch die Array-Länge ist aus dem Resultat der WebMethode kommt. Wenn Du nun ein Array mit 6000 Einträgen hast (was ich nicht glaube, sondern eher die Gesamtzahl der Zeichen), dann kannst Du dass genau gleich machen.

Wenn zum Beispiel ein Array, dass 6000 Zeichen hat und pro Zeile 500 Zeichen enthält, dann gibt dass ein String-Array mit der Länge 12. Diese 12 * 10, 100, 200 oder so wird dann die Höhe der Textbox.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

M
marv100 Themenstarter:in
227 Beiträge seit 2008
vor 14 Jahren

ah ok verstehe. habs nicht mit einem array gemacht sondern mit einem einfachen string.

**"Niemand wird je mehr als 640KB RAM benötigen!" **

Bill Gates, 1981

M
marv100 Themenstarter:in
227 Beiträge seit 2008
vor 14 Jahren

Hallo,

ich habe das jetzt so gelöst. Allerdings funktioniert dies nur im IE und nicht im FireFox. Hat jemand eine Ahnung warum?


                    <script type="text/javascript">
                        function pageLoad() {

                            OnGetContent();
                        }
                        function OnGetContent() {
                            var FTB = document.getElementById("<%= I_Editor.ClientID %>");
                            var result = new String;
                            result = FTB.value;
                            var l = result.length;
                            var FBT_Frame = document.getElementById("ctl00_ContentPlaceHolder1_I_Editor_designEditor");
                            FBT_Frame.style.height = l / 3.5;
                        }
                    </script>

Gruß,
marv100

**"Niemand wird je mehr als 640KB RAM benötigen!" **

Bill Gates, 1981

1.433 Beiträge seit 2006
vor 14 Jahren

Installiere mal den Firebug im FF, wenn Du nicht schon hast und untersuche die Textbox welche und schaue welche Differenzen es zum IE gerenderten Control gibt.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

3.170 Beiträge seit 2006
vor 14 Jahren

Hallo,

FBT_Frame.style.height = (l / 3.5) + "px";

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

M
marv100 Themenstarter:in
227 Beiträge seit 2008
vor 14 Jahren

Danke, das "px" fehlte =)

**"Niemand wird je mehr als 640KB RAM benötigen!" **

Bill Gates, 1981