Frage

Ich habe eine gespeicherte Prozedur in SQL Server, die sieben Ergebnismengen zurückgibt. Ich mag diese gespeicherte Prozedur von ASP.NET rufen und sieben Gridviews auf meiner ASP.NET-Seite mit den Ergebnissen zu füllen. Ich bin mit einem SqlDataReader die Daten zu bekommen, aber ich mit dem C # -Code bin kämpfen, um die Gridviews zu füllen.

Ich habe eine DAL-Klasse erstellt, die Daten zu bekommen, und ich habe diese Methode dort:

public SqlDataReader CheckDataIntegrity()
{
    SqlCommand cmd = new SqlCommand("cc.DataCheck");
    return MultipleResults(cmd);
}

Die Hilfsmethode MultipleResults sieht wie folgt aus:

private SqlDataReader MultipleResults(SqlCommand cmd)
{
    SqlConnection con = new SqlConnection(_connectionString);
    cmd.Connection = con;

    con.Open();
    SqlDataReader dr = cmd.ExecuteReader();
    con.Close();
    return dr;

}

Ich versuche, die Komponente auf meiner Seite mit etwas zu nennen wie:

private void FillGridViews()           
{
    DBUtil DB = new DBUtil();
    using (SqlDataReader dr = DB.CheckDataIntegrity())
    {
        if (dr.HasRows)
        {
            while (dr.Read())
            {
                GridView1.DataSource = dr;
                GridView1.DataBind();
            }
        }
    }
} 

habe ich im Internet nach einem Beispiel dafür suchen, kann aber nichts finden.

Haben Sie eine Ressource kennen, oder ein kleines Beispiel zu teilen?

Danke.

War es hilfreich?

Lösung

Sie verwenden müssen, um die .NextResult ( ) -Methode Ihres Datareader aus dem ersten Ergebnismenge auf die nächste voraus. Die Methode gibt True zurück, wenn weitere Ergebnisse existieren in Ihrem Set oder False, wenn nicht mehr Ergebnismengen vorhanden sind.

Nach dem Aufruf von .NextResult () können Sie dann binden Sie Ihre Gridview auf die aktuelle Ergebnismenge.

Der Code könnte wie folgt aussehen:

SqlDataReader dr = DB.CheckDBIntegrity();

while (!dr.NextResult())
    {
       // bind results to appropriate grid
    }

Andere Tipps

Sie sollten DataSet verwenden, welche Tabellen mehrere haben kann, um Ihre Gridviews gebunden werden.

var dataset = GetDataSetForMy7GridViews();

// also valid: dataset.Tables["TableName"];
GridView1.DataSource = dataset.Tables[0]; 
GridView1.DataBind();

GridView2.DataSource = dataset.Tables[1];
GridView2.DataBind();

GridView3.DataSource = dataset.Tables[2];
GridView3.DataBind();

GridView4.DataSource = dataset.Tables[3];
GridView4.DataBind();

GridView5.DataSource = dataset.Tables[4];
GridView5.DataBind();

GridView6.DataSource = dataset.Tables[5];
GridView6.DataBind();

GridView7.DataSource = dataset.Tables[6];
GridView7.DataBind();

Da Sie zu 7 verschiedenen Gridview verbindlich sind, müssen Sie es auf diese Weise zu tun. Wenn Sie es nach Ihrem Code tun:

>             while (dr.Read())
>             {
>                 GridView1.DataSource = dr;
>                 GridView1.DataBind();
>             }

Es wird nur auf 1 Gridview binden.

hinzugefügt: vielleicht dieser Link ist eine Antwort auf Ihre Frage? http://www.codeguru.com/csharp/csharp/cs_network /database/article.php/c8715

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top