Laden...

ASP.NET: Langen Text per Klick ein- und ausklappen

Erstellt von sKiLLeSS vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.110 Views
S
sKiLLeSS Themenstarter:in
22 Beiträge seit 2009
vor 13 Jahren
ASP.NET: Langen Text per Klick ein- und ausklappen

Hallo!

Ich sitze seit langem mal wieder an einem kleinen privaten Projekt. Aus Platzgründen und aus Gründen der Optik würde ich gerne bsw. News ein- und ausklappen.
Als Beispiel:

  • Newstitel
    Newstext Newstext Newstext Newstext Newstext Newstext Newstext Newstext..

Wenn man auf das "+" klickt wird der Text ausgeklappt und bei nochmaligem Klicken wieder eingeklappt. (also wie bei der Quellcodeansicht hier im Forum)
Nun hab ich schon eine ganze Weile im Netz gesucht und immer finde ich nur TreeView als Vorschlag, das funktioniert zwar soweit auch aber der Text ist so lang, dass er meine Seite komplett in die Breite zieht.
Wenn ich überall in dem TreeView Element max. 400px Breite angebe, bringt dies leider auch nichts.
Ich denke TreeView hat keine Möglichkeit den Text umzubrechen oder?
Dann ist aber die Frage, was könnte man dafür noch nehmen ohne explizit Java zu lernen?

Gruß sKiLLeSS

1.373 Beiträge seit 2004
vor 13 Jahren

Hallo,

Du kannst das entweder clientseitig oder serverseitig lösen.

Beispiel für clientseitig:
Sende den kurze Text und den kompletten Text zum Browser und zeige zunächst nur (mittels CSS und Javascript) die kurze Version an. Bei einem Click auf das Pluszeichen tauschst du dann den kurzen mit dem langen Text aus. Das geht z.B. mit jQuery und toggle() sehr leicht. Statt einen langen und einen kurzen Text zu senden kannst du ggf. das Kürzen auch mittels Javascript vornehmen.

Beispiel für Serverseitig:
Sende zunächst nur den kurzen Text. Mach aus dem Pluszeichen ein Linkbutton. Bei einem Klick auf den Button tauschst du (serverseitig) den kurze Text durch einen langen Text aus.

Beispiel für eine Kombination aus Client und Server (AJAX):
Sende zunächst nur den kurzen Text. Bei einem Click auf das Pluszeichen setzt du einen AJAX-Request an den Server ab, der dir den langen Text sendet. Tausche dann den kurzen Text durch den langen Text aus.

Grüße,
Andre

691 Beiträge seit 2007
vor 13 Jahren

Entweder verwendest du die bereits genannte JQuery Variante, oder verwendest den CollapsiblePanelExtender aus dem AjaxControlToolkit: http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/CollapsiblePanel/CollapsiblePanel.aspx

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de

1.433 Beiträge seit 2006
vor 13 Jahren

Eine dritte Variante wäre, in dem Control in welchem der Text angezeigt wird, dass Du cleintseitig mit JavaScript zuerst

overflow="hidden"

machst und wenn ein Klick darauf geschieht den overflow wieder zulässt.

Als Beispiel (Ist VS2010 und daher JQuery-Syntax)


<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="ASP.NET.LangenTextperKlickeinUndAusklappen._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
        <script type="text/javascript" language="javascript" src="Scripts/jquery-1.4.1-vsdoc.js" ></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $("#Header").click(function () {
                    var headerBefore = $("#Header");
                    $("#Header").css("width", "auto");
                    $("#Header").css("height", "auto");
                    $("#Header").css("background-color", "Yellow");
                });
            });
        </script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Welcome to ASP.NET!
    </h2>
    <div id="NewsContent" style="width:auto; height:auto; overflow:hidden;">
    <div id="Header" style="width:50px; height:15px; overflow:hidden; border:2px; border-bottom-style:groove;">Dies ist ein öffentlicher oder freigegebener Computer</div>
    <br />
    <div id="Content" style="width:auto; height:auto;">
    Ok. Super. Werde ich morgen noch machen...
    Ich habe vorhin (um ca. 20.00 uhr) noch schnell darauf geschaut. Diagramm eins (Aufg.a) finde ich ok. Bei B&C musst du mehr oder weniger nur die 2 Buchungen (objekte) reinzeichnen. Sonst sahen die ok aus! Also näm z'lang...


    Ha geng no kes UML Buech ufta... I maag eifach nid ;-)
    Hilbä!
    </div>
    </div>
</asp:Content>

Wenn man dann auf das entsprechende Div klickt wirds gelb und der ganze Inhalt wird sichtbar. Bei einem weiteren Klick passiert noch nichts. (Quick and dirty)

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