Zum Inhalt springen

[ASP.NET] DataSet in GridView anzeigen


becks290188

Empfohlene Beiträge

Habe folgenses Problem:

Ich habe ein GridView und ein DataSet folglich GV und DS genannt.

Das DS wir durch eine List<string> gefüllt das klappt auch alles habe ich kontroliert das einzige was ist das GV zeigt nur die Spalten namen aber keinen Inhalt der Reihen darunter an.

        protected void Page_Load(object sender, EventArgs e)

        {


            //fillGrid(outputLines);


            if (!IsPostBack)

            {


                // Declare the query string.

                FillList();

                // Run the query and bind the resulting DataSet

                // to the GridView control.

                DataTable dt = fillGrid(outputLines);

                if (dt.Columns.Count > 0)

                {

                    GridView1.DataSource = dt;

                    GridView1.DataBind();

                }



            }     


        }

        public string test1 = "sdasda";

        public string test2 = "2";

        public string test3 = "3";

        public string test4 = "4";

        public string test5 = "5";

        public string test6 = "6";

        public string test7 = "7";

        public string test8 = "";

        private List<string> outputLines = new List<string>();

        private void FillList()

        { 

            outputLines.Add(test1);

            outputLines.Add(test2);

            outputLines.Add(test3);

            outputLines.Add(test4);

            outputLines.Add(test5);

            outputLines.Add(test6);

            outputLines.Add(test7);

            outputLines.Add(test8);

        }


        DataTable fillGrid(List<string> outputLines)

        {

            DataSet ds = new DataSet();

            DataTable dt = new DataTable();



            dt.Columns.Add("Datei", typeof(string));

            dt.Columns.Add("Datum", typeof(string));

            for (int lineIndex = 0; lineIndex < this.outputLines.Count; lineIndex += 2)

            {

                DataRow row = dt.NewRow();




                row["Datei"] = outputLines[lineIndex];

                row["Datum"] = outputLines[lineIndex + 1];


                dt.Rows.Add(row);


            }


            ds.Tables.Add(dt);



            return dt;


        }

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo!

Dein Code läuft einwandfrei. Nur schön ist was Anderes :-)

Du "verteilst" Strings über die Spalten der GridView.

Hier mal Dein Code mit zumindest etwas Ansatz von OOP.

Wie gesagt, nur ein ein Ansatz:


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

{


    private List<MyRow> MyRows = new List<MyRow>();


    protected void Page_Load(object sender, EventArgs e)

    {


        if (!IsPostBack)

        {

            FillMyRows();

            DataTable dt = FillGrid();

            if (dt.Columns.Count > 0)

            {

                GridView1.DataSource = dt;

                GridView1.DataBind();

            }

        }

    }


    private void FillMyRows()

    {

        MyRows.Add(new MyRow("Datei 1", DateTime.Parse("01.01.2007")));

        MyRows.Add(new MyRow("Datei 2", DateTime.Parse("01.01.2008")));

        MyRows.Add(new MyRow("Datei 3", DateTime.Parse("01.01.2009")));

        MyRows.Add(new MyRow("Datei 4", DateTime.Parse("01.01.2010")));       

    }


    DataTable FillGrid()

    {

        DataSet ds = new DataSet();

        DataTable dt = new DataTable();


        dt.Columns.Add("Datei", typeof(string));

        dt.Columns.Add("Datum", typeof(DateTime));


        foreach (MyRow m in MyRows)

        {

            DataRow row = dt.NewRow();

            row["Datei"] = m.Col1;

            row["Datum"] = (DateTime)m.Col2;

            dt.Rows.Add(row);

        }

        ds.Tables.Add(dt);

        return dt;

    }

    class MyRow

    {

        public MyRow(string ColWert1, DateTime ColWert2)

        {

            col1 = ColWert1;

            col2 = ColWert2;

        }

        private string col1;

        public string Col1

        {

            get { return col1; }

            set { col1 = value; }

        }


        private DateTime col2;

        public DateTime Col2

        {

            get { return col2; }

            set { col2 = value; }

        }

    }


}


Einfach eine Klasse erstellen die Daten entsprechend deiner Vorstellungen hält. Hier im einfachsten Falle MyRow und eine generische Liste mit dem Namen MyRows. So bringst Du auch mehr Typensicherheit ein da Du ja auch ein Datum verwendest. Du kannst hier noch eine kapselnde Klasse schreiben die die einzelnen MyRow als ein Liste o.ä. hält. Die Klasse sollte Dir auch Direkt ein DataSet oder eine DataTable für die Datenbindung zurückgeben. So musst Du nicht immer den Code anfassen wenn sich Datenstrukturen ändern!

Gruß,

Thomas

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...