Laden...

ASP.NET MVC List<> an GridView

Erstellt von ZombieIK vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.088 Views
Z
ZombieIK Themenstarter:in
12 Beiträge seit 2011
vor 13 Jahren
ASP.NET MVC List<> an GridView

Hallo Zusammen, wie o.g. möchte gern einen ListContainer an ein GridView binden.
------MODEL---------


    public class AdresseObj
    {
        public int ID { get; set; }
        public String Name { get; set; }
        public String Vorname { get; set; }
        public String Ort { get; set; }

    }
    public class AdresseObjRepo
    {
        List<AdresseObj> AdList = new List<AdresseObj>();

        public void SetTestData()
        {
            AdresseObj obj = new AdresseObj();
            obj.ID = 1;
            obj.Name = "Hans";
            obj.Vorname = "Wurst";
            obj.Ort = "M";
            AdList.Add(obj);

            obj = new AdresseObj();
            obj.ID = 2;
            obj.Name = "Peter";
            obj.Vorname = "Lug";
            obj.Ort = "MZ";
            AdList.Add(obj);

            obj = new AdresseObj();
            obj.ID = 3;
            obj.Name = "Werner";
            obj.Vorname = "Mueller";
            obj.Ort = "WOB";
            AdList.Add(obj);

            obj = new AdresseObj();
            obj.ID = 4;
            obj.Name = "Lukas";
            obj.Vorname = "Poldi";
            obj.Ort = "K";
            AdList.Add(obj);

            obj = new AdresseObj();
            obj.ID = 5;
            obj.Name = "Andy";
            obj.Vorname = "Jeder";
            obj.Ort = "HH";
            AdList.Add(obj);
        }

        public List<AdresseObj> getAllAdresse()
        {
            return this.AdList;
        }
    }

------Controller---------


    public class DataGridTestController : Controller
    {
        //
        // GET: /DataGridTest/
        AdresseObjRepo RepoObj = new AdresseObjRepo();

        public ActionResult Index4()
        {
            RepoObj.SetTestData();
            var AdressTable = RepoObj.getAllAdresse();
            return View(AdressTable);
        }
  }

--VIEW----


<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
	Index4
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <form id="form1" runat="server">

    <h2>Gridview (Objekt)</h2>
    <p>   
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="ObjectDataSource1">
            <Columns>
                <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:BoundField DataField="Vorname" HeaderText="Vorname" 
                    SortExpression="Vorname" />
                <asp:BoundField DataField="Ort" HeaderText="Ort" SortExpression="Ort" />
            </Columns>
        </asp:GridView>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
            SelectMethod="getAllAdresse" TypeName="Test.Models.AdresseObjRepo">
        </asp:ObjectDataSource>
    </p>
    </form>
</asp:Content>

Also durch ObjectDataSource wurden schon die Spalten automatisch gezogen, zumindest im Entwurf. Aber es werden keine Daten angezeigt ich vermute das die Referenz irgendwie fehlt. Was mache ich falsch? Danke

S
417 Beiträge seit 2008
vor 13 Jahren

Hi,

du mischt da zwei Dinge die so nicht zusammen passen: WebForms und MVC
Das GridView Control das du verwendest, funktioniert daher nicht ohne weiteres in einer MVC-Anwendung. Siehe auch: http://stackoverflow.com/questions/2803525/asp-net-gridview-mvc
Es gibt diverse andere Grid-Controls für MVC: http://stackoverflow.com/questions/177275/grid-controls-for-asp-net-mvc

Z
ZombieIK Themenstarter:in
12 Beiträge seit 2011
vor 13 Jahren

Das ist schade das es nicht mit den Standardkomponenten funktioniert..mm
Weil mit einer LINQ ressource funktioniert es einwandfrei

1.433 Beiträge seit 2006
vor 13 Jahren

Wenn Du ein Grid in MVC brauchen willst, musst Du mit MVC 3 arbeiten. Dort haben sie die neue Razor-Engine (glaub ich sie heisst so) implementiert, dass per Templating ein Grid herstellt. Hier ein Einstiegspunkt.

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

Z
ZombieIK Themenstarter:in
12 Beiträge seit 2011
vor 13 Jahren

Heist das man darf in MVC, solche Sachen wie void Page_Load(Object Src, EventArgs E) nicht verwenden obwohl sie funktionieren. Oder so sachen wie <asp:label...></asp:Label>?

Wo dran sehe ich welche Elemente legitim sind, weil die Entwicklungsumgebung mir alle möglichen Sachen zur Verfügung stellt.

16.830 Beiträge seit 2008
vor 13 Jahren

CodeBehinds in MVC sind sehr "böse" - zwar Möglich aber Du solltest wenn möglich KEIN CodeBehind nutzen!
Genauso rate ich Dir von der Nutzung von <asp:>-Controls wirklich ab; stattdessen auf das eigentliche MVC und jQuery setzen.

Wenn Du sowas wie Page_Load() etc nutzen willst, bist Du mit MVC nicht richtig bedient.

1.433 Beiträge seit 2006
vor 13 Jahren

Wenn Du sowas wie Page_Load() etc nutzen willst, bist Du mit MVC nicht richtig bedient.

Würde ich jetzt auch meinen. Du hast immer nur den Controller /View /Model zur Verfügung und machst alle Logik im Controller und die "Controls" werden mithilfe des InlineCode in der ASPX mit dem HtmlHelper generiert /erstellt.

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

Z
ZombieIK Themenstarter:in
12 Beiträge seit 2011
vor 13 Jahren

Meine Aufgabe ist es eine Rechteverwaltung mit Quelle LDAP zu entwickeln. Hoffe mal das MVC das korrekte ist.