Zum Inhalt springen

[ASP.NET] Dynamische Befüllung von Webelementen


Shadowman

Empfohlene Beiträge

Ich habe in meiner Datenbank eine Tabelle mit Gruppen, welche ich auf einer aspx Seite ausgeben möchte. Dies habe ich mit einer asp:Table versucht, wo ich aber feststellen musste, dass es in ASP-Elementen nicht möglich ist das Ergebnis meines Querys zeilenweise innerhalb der Seite zu durchlaufen und währenddessen neue Zeilen in die asp:Table Element zu schreiben. Ich habe mir dann etwas zu GridViews angeguckt und auch hier feststellen müssen, dass ich das irgendwie mit der DataSource nicht wirklich hinbekomme.

        <%

            oracle db = new oracle();

            System.Data.Common.DbDataReader group = null;


            db.prepare("SELECT * FROM zdvs_groups ORDER BY name ASC");

            db.execute();

            while(db.fetch(ref group)) {

        %>

        <!-- hier soll die Zeile ausgegeben werden -->

        <%

            }

            db.close();

        %>

Solchen Programmcode kann man laut einigen Quellen nicht innerhalb von Elementen ausführen, welche runat="server" als Parameter haben.

Jetzt habe ich versucht das ganze in einer normalen HTML Table darzustellen, bekomme jetzt aber den Fehler "Der Typ- oder Namespacename "global_asax" ist im Namespace "ASP" nicht vorhanden."

Bei einer .master Seite hat man die Möglichkeit in einer .cs Datei im Hintergrund zu steuern und Felder zu befüllen. Dies geht aber nicht bei normalen Seiten (zumindest finde ich sowas nicht).

Kann mir bitte jemand einen Tipp geben, wie ich die Befüllung aus der View rausnehmen kann und es endlich hinbekomme eine Darstellung der Gruppen zu schaffen?

Gruß

Shadowman

Link zu diesem Kommentar
Auf anderen Seiten teilen

Uhhh...Die aspx-Datei sollte nur den Code für die Darstellung beinhalten. Jede aspx-Datei hat eine Code-Behind-Datei, in der man die Steuerelemente, die mit dem 'runat="server"' ausgestattet sind, über die ID ansprechen kann.

Der Aufruf der Daten und das Zuweisen der Daten sollte also im Hintergrund passieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier ein schnelles Beispiel:


    public partial class WebForm1 : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            repeater1.DataSource = LoadPeople();

            repeater1.DataBind();

        }


        private IEnumerable<Person> LoadPeople()

        {

            return new List<Person>

            {

                new Person { FirstName = "Hans", LastName = "Wurst" },

                new Person { FirstName = "Peter", LastName = "Pan" }

            };

        } 


    }


    public class Person

    {

        public string FirstName { get; set; }


        public string LastName { get; set; }

    }



        <ul>

            <asp:Repeater runat="server" ID="repeater1" >

                <ItemTemplate>

                    <li><%# ((Person)Container.DataItem).FirstName %></li>

                </ItemTemplate>

            </asp:Repeater>

        </ul>

es gibt aber noch genügend andere datengebundene steuerelemente, die zur darstellung genutzt werden können.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ich möchte den Code auch garnicht in der aspx Seite haben, da sonst die Verwendung vom MVC Pattern hinfällig wäre.

Das Problem ist ja eben die code behind Datei, welche nicht vorhanden ist.

Ich werde das gleich nochmal genauer prüfen. Vielleicht habe ich auch was falsch gemacht. Ich werde dann genau beschreiben was ich mache und was ich finde, damit man es besser nachvollziehen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube ich habe mein Problem gefunden. Ich habe keine WebForms erstellt, sondern MVC 2 Seiten, welche keine code behind Datei haben.

Genau so habe ich mir das vorgestellt.

Danke für diesen Tipp!

Allerdings habe ich bei der Umstellung das Problem, dass ich jetzt folgenden Fehler beim Aufruf der Seite bekomme:

Die Ansicht bei "~/Views/Admin/Group.aspx" muss von ViewPage, ViewPage<TViewData>, ViewUserControl oder ViewUserControl<TViewData> abgeleitet werden.
Das liest sich, als wenn ich jetzt am Controller auch etwas umstellen muss. Meine cs Datei sieht ähnlich aus wie deine, bis auf dass ich noch keine Funktionen hinterlegt habe. Der Controller sieht noch so aus, wie er für die normale View war:
        //

        // GET: /Admin/Group

        public ActionResult Group()

        {

            return View();

        }

Bearbeitet von Shadowman
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe eine MVC Anwendung.

Innerhalb dieser MVC Anwendung verwende ich in den aspx Dateien 'asp:' Tags.

Mit der Aussage, dass ich bei ASP.NET MVC keine Benutzersteuerelemente von ASP.NET benötige hast du mich durcheinander gebracht. Ich Brauche zwingend Elemente, welche ich dynamisch füllen und damit arbeiten kann.

Wenn ich jetzt Funktionen hinterlegen möchte, muss ich die warscheinlich in der entsprechenden Controller Klasse hinterlegen (richtig?). Leider habe ich genau zu diesem Thema keinerlei Anleitungen gefunden, weswegen dann die Vermutung aufkam, dass es anders gehen müsste.

Kannst du mir dazu vielleicht eine gute Seite schicken, auf der die genaue Verwendung des Controllers und das ansteuern von Elementen der View beschrieben wird, oder das vielleicht sogar erklären, wenn du Zeit hast?

Mfg Shadowman

Link zu diesem Kommentar
Auf anderen Seiten teilen

Anbei das Beispiel mit einer ASP.NET MVC Anwendung


// Controller


    public class ValuesController : Controller

    {

        public ActionResult Index()

        {

            var persons = LoadPeople();


            return View(persons);

        }


        private IEnumerable<Person> LoadPeople()

        {

            return new List<Person>

            {

                new Person { FirstName = "Hans", LastName = "Wurst" },

                new Person { FirstName = "Peter", LastName = "Pan" }

            };

        } 

    }


    public class Person

    {

        public string FirstName { get; set; }


        public string LastName { get; set; }

    }


// View


<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<System.Collections.Generic.IEnumerable<MvcApplication1.Controllers.Person>>" %>


<!DOCTYPE html>


<html>

<head runat="server">

    <meta name="viewport" content="width=device-width" />

    <title>Index</title>

</head>

<body>

    <div>

        <ul>

            <% foreach (var person in Model)

               { %>

                    <li>

                        <span><%= person.FirstName %> <%= person.LastName %></span>

                    </li>

               <% } %>

        </ul>

    </div>

</body>

</html>

Da ich eher die Razor-Engine bevorzuge, falls wir mal was mit MVC machen, kann es sein, die Aussage von mir betreffs den Steuerelementen von ASP.NET nicht 100%ig richtig ist :-)

Als erste Anlaufstelle würde ich die Seite asp.net empfehlen.

Ansonsten Microsoft Virtual Academy

Bearbeitet von lbm1305
Link zu diesem Kommentar
Auf anderen Seiten teilen

Seit Visual Studio kannst du mittels One ASP.NET MVC und WebForms mischen, was wohl hier der Fall ist. Ich würde dir raten dich auf eins zu beschränken und MVC ist hier der wohl zukunftsweisendere Weg.

Keine Angst: du kannst auch mit MVC dynamische Strukturen implementieren. Ich würde dir aber raten, dich vorher einmal intensiver mit dem Thema zu beschäftigen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...