none
ASP MVC 4 Daten im ListView anzeigen RRS feed

  • Frage

  • Hallo,
    ich will mit dem ASP MVC 4 Daten im ListView anzeigen. Der User kann diese nicht ändern.

    Homecontroller.cs:

    public ActionResult Projects()
    {
        DataTable dataTable = null;
        if (ModelState.IsValid)
        {
            var connectionString = ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString;
            using (var connection = new SqlConnection(connectionString))
            {
                string query = "SELECT * FROM [Projects]";
                var command = new SqlCommand(query, connection);
                try
                {
                    connection.Open();
                    var dataAdapter = new SqlDataAdapter(command);
                    var dataSet = new DataSet();
                    dataAdapter.Fill(dataSet);
                }
                catch (Exception exception)
                {
                    //
                }
            }
        }
        return View(dataTable);
    }

    Projects.aspx:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
    <asp:Content ID="Content_3" ContentPlaceHolderID="MainContent" runat="server">
      ...
    </asp:Content>

    1. Ist es richtig bzw. üblich, dass von ActionResult eine DataTable mit acht Spalten an die View übergeben wird?
    2. Wie kann ich mit einer foreach-Schleife die DataTable durchlaufen (z.B. Spalte Beschreibung) und die Werte anzeigen; einfach zur Kontrolle?
    3. Wie kann ich die Daten der DataTable in einem ListView anzeigen (z.B. Spalte Beschreibung, Titel) mit MVC 4?

    Alexander


    • Bearbeitet Ciprian Bogdan Dienstag, 17. Dezember 2013 17:16 Codeblock
    Montag, 16. Dezember 2013 14:17

Antworten

  • Hallo,
    zum zweiten Punkt habe ich eine Lösung:

    <table >
        <thead>
            <tr>
                <%foreach (System.Data.DataColumn col in Model.Columns) { %>
                    <th><%=col.Caption %></th>
                <%} %>
            </tr>
        </thead>
        <tbody>
        <% foreach(System.Data.DataRow row in Model.Rows) { %>
            <tr>
                <% foreach (var cell in row.ItemArray) {%>
                    <td><%=cell.ToString() %></td>
                <%} %>
            </tr>
        <%} %>         
        </tbody>
    </table>

    Damit kann ich zum Testen mir alle Daten der DataTable anzeigen lassen.
    Nun fehlt mir noch eine Lösung, um die Daten von der DataTable in einer ListView anzuzeigen.
    Hier liegt offensichtlich der Fehler in der Angabe von DataSourceID.
    Was fehlt für DataSourceID noch in ASPX; also ohne C#?

    Alexander


    <asp:ListView ID="ListView1" runat="server" DataSourceID="Model">
        <LayoutTemplate>
            <table style="width: 100%; text-align: left;">
                <tr>
                    <td style="width: 20%; text-align: center;">Beschreibung</td>
                    <td style="width: 20%; text-align: center;">Titel</td>
                </tr>
                <tr runat="server" id="itemPlaceHolder"></tr>
            </table>
        </LayoutTemplate>
        <ItemTemplate>
            <tr id="itemPlaceHolder">
                <td style="width: 20%; text-align: center;"><%#Eval("Beschreibung")%></td>
                <td style="width: 20%; text-align: center;"><%#Eval("Titel")%></td>
            </tr>
        </ItemTemplate>
    </asp:ListView>



    • Bearbeitet Ciprian Bogdan Dienstag, 17. Dezember 2013 17:20 Codeblock
    • Als Antwort markiert Ciprian Bogdan Dienstag, 17. Dezember 2013 17:22
    Dienstag, 17. Dezember 2013 10:07
    • Als Antwort markiert Ciprian Bogdan Dienstag, 17. Dezember 2013 17:22
    Dienstag, 17. Dezember 2013 17:22

Alle Antworten