2009-04-06 11 views
1

Frage kann auch sein:Wie Stored Procedures verwenden w/ASP.NET Datagrid

Was ist Ihre bevorzugte Art und Weise ist der Aufruf von Stored Procedures ein Datagrid zu füllen?

Ich entwickle derzeit eine ASP.NET-Seite, und ich würde gerne wissen, ob Linq der richtige Weg für die Verwendung mit meinem SQL Server DB ist.

ADO scheint zu schön, so würde ich nur Feedback haben wie auf das, was im Allgemeinen am besten geeignet ist ..

LINQ sicher macht es einfach, eine gespeicherte Prozedur aufrufen, aber ich bin ein bisschen stecken in Versuchen, den richtigen Weg zu finden, um die Ergebnismenge aus der gespeicherten Prozedur in ein Datagrid zu setzen.

Denkt nicht, ich ein foreach tun wollen there..but alle Beispiele scheinen, so zu zeigen .. oder ich bin nur verwirrt

I have read this blog post und this one, so scheint es, die Wege zu gehen sind foreach und Ienumerable Methoden .. und ich bin ein bisschen verwirrt über die ganze Sache.

Ich denke auch über die tutorial for creating a Movie DataBase, wo das DataGrid in diesem Fall einfach unnötig wurde.

Was ist die einfachste, zum Punkt Art und Weise eine einfache SQL Vorgehensweise für den Zugriff auf und ein besiedeltes Datagrid oder Datagrid wie Datenpräsentationsmodell zurückzukehren?

Antwort

2

Ich würde vorschlagen, Linq zu SQL zu verwenden. Sie haben recht, wenn Sie denken, dass Sie keine foreach Schleifen verwenden sollten - alles, was Sie brauchen, ist Datenbindung.

z. In Ihrem Code hinter, könnten Sie eine DataBind Veranstaltung haben, die so etwas wie dies funktioniert:

protected void GridView1_DataBanding(object sender, EventArgs e) 
{ 
      // Get an instance of our generated DataContext class. 
      DAL.AdventureWorks db = 
       new DAL.AdventureWorks(
        WebConfigurationManager.ConnectionStrings["AdventureWorksCS"].ConnectionString); 

      // Get a strongly typed List from the Stored Procedure output 
      List<DAL.MySPResult> myData = db.MySP().ToList(); 

      GridView1.DataSource = myData; 
} 

Sie müssen in Ihrer Linq to SQL-Klassen durch Ziehen auf die Entwurfsoberfläche Einrichtung Ihre gespeicherten Prozedur haben.

Hoffe, dass hilft.

+0

Vielen Dank! Mein Hauptproblem war, dass ich nicht Linq..so die Option für List() war nicht in der Intelisense ... Danke, alles ist jetzt gut. –

1

Die Verwendung einer SqlDataSource ist der einfachste Weg. Wenn Sie alle DB-Aufrufe in einer Business-Schicht isolieren, können Sie einfach eine ObjectDataSource erstellen, die die gespeicherte Prozedur aufruft. Während es sich hier wie ein Overkill anfühlen mag, ist dies eine nützliche Fähigkeit, und sehr einfach zu implementieren, sobald Sie den Dreh raus bekommen.

Sie brauchen LINQ oder foreach usw. nicht wirklich, wenn Sie ein datengebundenes Steuerelement verwenden, da Sie es nicht manuell ausfüllen müssen (darum geht es bei Datenbindung).

Eine weitere Sache - ich würde wird dringend empfohlen, einen Grid anstatt das Datagrid verwenden; es ist neuer, hat viele weitere Funktionen automatisiert und ist eine leistungsfähigere und attraktivere Steuerung. Lassen Sie es mich wissen, wenn Sie einen Beispielcode benötigen.

Verwandte Themen