Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Custom HTML μέσα σε ASP.NET 2.0 server controls - Διαφορά από 1.x

Îåêßíçóå áðü ôï ìÝëïò Sunburn. Τελευταία δημοσίευση από το μέλος Sunburn στις 27-03-2006, 14:54. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-03-2006, 15:33 10686

    Custom HTML μέσα σε ASP.NET 2.0 server controls - Διαφορά από 1.x

    'Ενα από τα χαρακτηριστικά που χρησιμοποιώ συχνότατα στο ASP.NET 1.x είναι η δυνατότητα να εισάγεις (inject?) κώδικα HTML μέσα σε ένα κείμενο το οποίο στη συνέχεια, oταν εμφανιζόταν στο server control για το οποίο προοριζόταν, κάνει σωστά rendering το τμήμα HTML. Αυτό είναι χρησιμότατο όταν θέλω να αλλάξω τα χαρακτηριστικά του ΗΤΜL κώδικα βάσει της τιμής κάποιας μεταβλητής κλπ.

    Παράδειγμα: Παιρνω ενα datatable με 2 columns, το πρώτο έχει κάποιο κείμενο και το δεύτερο κάποιες τιμές. Ακολούθως:


    for each theRow in datatable.rows
        if theRow("Column2") > 0 then

            theRow("Column1") = "Click <a href=Page1>here</a> for details"

        else

            theRow("Column1") = "You are not authorised <img src='Stop.jpg'>"

        end if

    next


    Κάνω λοιπόν μετά databind π.χ. ένα datagrid σε αυτό το datatable και όντως σε κάθε σειρά του Column1 εμφανίζει διαφορετικό HTML αναλόγως με τις τιμές του Column2.

    Πάω τώρα να κάνω το ίδιο σε ένα ASP.NET 2.0 server control  και βλέπω  ότι η συμπεριφορά του  rendering έχει αλλάξει. Αντί να αναγνωρίζει τα HTML tags και να παράγει HTML output από αυτά, τα αντιμετωπίζει ως απλό κείμενο και τα βγάζει χύμα όπως ακριβώς τα πήρε. Π.χ. στο παραπάνω παράδειγμα αντί να βγάζει hyperlink ή εικόνα, βγάζει αντίστοιχα τα κείμενα "<a href=Page1>here</a>" και "<img src='Stop.jpg'>".

    Γνωρίζει κάποιος πώς γίνεται να κάνει το rendering με τον ίδιο τρόπο όπως στα 1.x controls?



  •  22-03-2006, 11:35 10956 σε απάντηση της 10686

    Απ: Custom HTML μέσα σε ASP.NET 2.0 server controls - Διαφορά από 1.x

    Κανείς;
  •  22-03-2006, 12:03 10960 σε απάντηση της 10956

    Απ: Custom HTML μέσα σε ASP.NET 2.0 server controls - Διαφορά από 1.x

    Θα ήτανε καλύτερα να κάνεις τη στήλη template και να την επεξεργαστείς βάζοντας μέσα πχ ένα hyperlink που να γίνεται bind ή να του δίνεις κάποια τιμή με το prerender.



    Άν θες περισσότερες διευκρινήσεις πές
    Simple Photography
  •  27-03-2006, 14:09 11213 σε απάντηση της 10686

    Απ: Custom HTML μέσα σε ASP.NET 2.0 server controls - Διαφορά από 1.x

    To πρόβλημα με τα templates ειναι οτι υποθέτουν πως ξέρεις εκ των προτέρων τί δεδομένα θα σου έρθουν για binding. Σε πολλές περιπτώσεις βάζεις ένα GridView ή DetailsView χωρίς να ξέρεις τί ακριβώς columns θα έρθουν (γιατί το SELECT query αλλάζει σύμφωνα με τις επιλογές του χρήστη), οπότε υποχρεωτικά χρησιμοποιείς auto-generated fields για να καλύψεις κάθε περίπτωση.



    Υπάρχει κάποιο property στα 2.0 controls που να τα υποχρεώνει να κάνουν σωστό HTML rendering αντί απλά να "παπαγαλίζουν" το κείμενο που τους έρχεται;
  •  27-03-2006, 14:42 11217 σε απάντηση της 10686

    Απ: Custom HTML μέσα σε ASP.NET 2.0 server controls - Διαφορά από 1.x

    Μπορείς τότε στο databinding να καλείς ένα function, με παραμέτρους τα 2 αυτά πεδία (ως objects, με το απαραίτητο type casting φυσικά), το οποίο θα επεξεργάζεται τα στοιχεία και θα τυπώνει το κατάλληλο κείμενο.
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  27-03-2006, 14:54 11218 σε απάντηση της 11217

    Απ: Custom HTML μέσα σε ASP.NET 2.0 server controls - Διαφορά από 1.x

    Το βρήκα!

    Το παρακάτω δουλεύει χρησιμοποιώντας το event "Databound" του DetailsView αλλά υποθέτω πως το ίδιο ισχύει και για τα άλλα 2.0 controls:

            Dim theRow As DetailsViewRow


    For Each theRow In DetailsView1.Rows

    If theRow.Cells(0).Text = "Email" Then

    theRow.Cells(1).Text = "<a href=mailto:theRow.Cells(1).Text>" & theRow.Cells(1).Text & "</a>"

    End If

    Next
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems