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
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
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
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
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
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
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
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
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
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
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
Hallo,
FBT_Frame.style.height = (l / 3.5) + "px";
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Danke, das "px" fehlte =)
**"Niemand wird je mehr als 640KB RAM benötigen!" **
Bill Gates, 1981