Hinzufügen von zusätzlichen DataTable-Spalten (C#)
von Scott Mitchell
Wenn Sie den TableAdapter-Assistenten verwenden, um ein typisiertes DataSet zu erstellen, enthält die entsprechende DataTable die Spalten, die von der Standard Datenbankabfrage zurückgegeben werden. Es gibt jedoch Fälle, in denen die DataTable zusätzliche Spalten enthalten muss. In diesem Tutorial erfahren Sie, warum gespeicherte Prozeduren empfohlen werden, wenn zusätzliche DataTable-Spalten benötigt werden.
Einführung
Beim Hinzufügen eines TableAdapter zu einem typisierten DataSet wird das entsprechende DataTable-Schema von der TableAdapter-Standard-Abfrage bestimmt. Wenn die Standard Abfrage beispielsweise die Datenfelder A, B und C zurückgibt, verfügt die DataTable über drei entsprechende Spalten mit dem Namen A, B und C. Zusätzlich zur Standard Abfrage kann ein TableAdapter zusätzliche Abfragen enthalten, die möglicherweise eine Teilmenge der Daten basierend auf einem Parameter zurückgeben. Für instance enthält sie neben der ProductsTableAdapter
Abfrage s Standard, die Informationen zu allen Produkten zurückgibt, auch Methoden wie GetProductsByCategoryID(categoryID)
und GetProductByProductID(productID)
, die bestimmte Produktinformationen basierend auf einem angegebenen Parameter zurückgeben.
Das Modell, dass das DataTable-Schema die TableAdapter-Standard Abfrage widerspiegelt, funktioniert gut, wenn alle TableAdapter-Methoden dieselben oder weniger Datenfelder als die in der Standard-Abfrage angegebenen zurückgeben. Wenn eine TableAdapter-Methode zusätzliche Datenfelder zurückgeben muss, sollten wir das DataTable-Schema entsprechend erweitern. Im Tutorial Master/Detail Using a Bulleted List of Master Records with a Details DataList haben wir eine Methode hinzugefügt, die die CategoriesTableAdapter
CategoryID
datenfelder , CategoryName
, und Description
zurückgegeben hat, die in der Standard Abfrage plus NumberOfProducts
definiert sind, ein zusätzliches Datenfeld, das die Anzahl der mit jeder Kategorie verknüpften Produkte angibt. Wir haben manuell eine neue Spalte hinzugefügt, um den CategoriesDataTable
NumberOfProducts
Datenfeldwert aus dieser neuen Methode zu erfassen.
Wie im Tutorial Zum Hochladen von Dateien erläutert, muss bei TableAdapters, die Ad-hoc-SQL-Anweisungen verwenden und Über Methoden verfügen, deren Datenfelder nicht genau mit der Standard Abfrage übereinstimmen, mit großer Sorgfalt behandelt werden. Wenn der TableAdapter-Konfigurations-Assistent erneut ausgeführt wird, werden alle TableAdapter-Methoden aktualisiert, sodass ihre Datenfeldliste mit der Standard Abfrage übereinstimmt. Folglich werden alle Methoden mit angepassten Spaltenlisten in die Spaltenliste der Standard Abfrage rückgängig machen und nicht die erwarteten Daten zurückgeben. Dieses Problem tritt nicht auf, wenn gespeicherte Prozeduren verwendet werden.
In diesem Tutorial erfahren Sie, wie Sie ein DataTable-Schema erweitern, um zusätzliche Spalten einzuschließen. Aufgrund der Sprödigkeit des TableAdapters bei Verwendung von Ad-hoc-SQL-Anweisungen verwenden wir in diesem Tutorial gespeicherte Prozeduren. Weitere Informationen zum Konfigurieren eines TableAdapters finden Sie im Tutorial Zum Erstellen neuer gespeicherter Prozeduren für das Typed DataSet s TableAdapters-Tutorial .
Schritt 1: Hinzufügen einerPriceQuartile
Spalte zumProductsDataTable
Im Tutorial Erstellen neuer gespeicherter Prozeduren für das Typed DataSet s TableAdapters-Tutorial haben wir ein typisiertes DataSet mit dem Namen NorthwindWithSprocs
erstellt. Dieses DataSet enthält derzeit zwei DataTables: ProductsDataTable
und EmployeesDataTable
. Verfügt ProductsTableAdapter
über die folgenden drei Methoden:
GetProducts
– die Standard-Abfrage, die alle Datensätze aus derProducts
Tabelle zurückgibtGetProductsByCategoryID(categoryID)
– Gibt alle Produkte mit der angegebenen categoryID zurück.GetProductByProductID(productID)
– gibt das bestimmte Produkt mit der angegebenen productID zurück.
Die Standard Abfrage und die beiden zusätzlichen Methoden geben alle denselben Satz von Datenfeldern zurück, nämlich alle Spalten aus der Products
Tabelle. Es gibt keine korrelierten Unterabfragen oder JOIN
s, die verwandte Daten aus den Categories
Tabellen oder Suppliers
ziehen. Daher verfügt das über ProductsDataTable
eine entsprechende Spalte für jedes Feld in der Products
Tabelle.
Fügen Sie für dieses Tutorial eine Methode zu dem namens GetProductsWithPriceQuartile
hinzu, die ProductsTableAdapter
alle Produkte zurückgibt. Zusätzlich zu den Standard-Produktdatenfeldern enthält auch ein PriceQuartile
Datenfeld, GetProductsWithPriceQuartile
das angibt, unter welchem Quartil der Produktpreis fällt. Zum Beispiel haben diejenigen Produkte, deren Preise in den teuersten 25 % liegen, einen PriceQuartile
Wert von 1, während diejenigen, deren Preise in den unteren 25 % fallen, einen Wert von 4 haben. Bevor wir uns jedoch um das Erstellen der gespeicherten Prozedur für die Rückgabe dieser Informationen kümmern, müssen wir zuerst aktualisieren ProductsDataTable
, um eine Spalte einzuschließen, um die PriceQuartile
Ergebnisse zu speichern, wenn die GetProductsWithPriceQuartile
Methode verwendet wird.
Öffnen Sie das NorthwindWithSprocs
DataSet, und klicken Sie mit der rechten Maustaste auf .ProductsDataTable
Wählen Sie im Kontextmenü hinzufügen und dann Spalte aus.
Abbildung 1: Hinzufügen einer neuen Spalte zu (Klicken Sie hier, um dasProductsDataTable
Bild in voller Größe anzuzeigen)
Dadurch wird der DataTable eine neue Spalte mit dem Namen Column1 des Typs System.String
hinzugefügt. Wir müssen den Namen dieser Spalte auf PriceQuartile und ihren Typ aktualisieren, System.Int32
da er verwendet wird, um eine Zahl zwischen 1 und 4 zu enthalten. Wählen Sie die neu hinzugefügte Spalte im ProductsDataTable
aus, und legen Sie die Eigenschaft aus dem Eigenschaftenfenster auf PriceQuartile und die DataType
-Eigenschaft auf System.Int32
festName
.
Abbildung 2: Festlegen der neuen Spalten Name
und DataType
Eigenschaften (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Wie Abbildung 2 zeigt, können zusätzliche Eigenschaften festgelegt werden, z. B. ob die Werte in der Spalte eindeutig sein müssen, ob es sich bei der Spalte um eine Spalte mit automatischer Inkrementierung handelt, ob Datenbankwerte NULL
zulässig sind usw. Lassen Sie diese Werte auf ihre Standardwerte festgelegt.
Schritt 2: Erstellen derGetProductsWithPriceQuartile
Methode
Nachdem die ProductsDataTable
nun aktualisiert wurde, um die PriceQuartile
Spalte einzuschließen, können Sie die GetProductsWithPriceQuartile
-Methode erstellen. Klicken Sie zunächst mit der rechten Maustaste auf den TableAdapter, und wählen Sie im Kontextmenü Abfrage hinzufügen aus. Dadurch wird der TableAdapter-Abfragekonfigurations-Assistent angezeigt, der uns zuerst fragt, ob wir Ad-hoc-SQL-Anweisungen oder eine neue oder vorhandene gespeicherte Prozedur verwenden möchten. Da wir noch keine gespeicherte Prozedur haben, die die Preisquartildaten zurückgibt, erlauben wir dem TableAdapter, diese gespeicherte Prozedur für uns zu erstellen. Wählen Sie die Option Neue gespeicherte Prozedur erstellen aus, und klicken Sie auf Weiter.
Abbildung 3: Weisen Sie den TableAdapter-Assistenten an, die gespeicherte Prozedur für uns zu erstellen (Klicken Sie hier, um das vollständige Bild anzuzeigen)
Auf dem nachfolgenden Bildschirm in Abbildung 4 fragt uns der Assistent, welcher Abfragetyp hinzugefügt werden soll. Da die GetProductsWithPriceQuartile
-Methode alle Spalten und Datensätze aus der Products
Tabelle zurückgibt, wählen Sie die Option SELECT, die Zeilen zurückgibt, aus, und klicken Sie auf Weiter.
Abbildung 4: Unsere Abfrage ist eine SELECT
Anweisung, die mehrere Zeilen zurückgibt (Klicken Sie hier, um das bild in voller Größe anzuzeigen).
Als Nächstes werden wir zur SELECT
Abfrage aufgefordert. Geben Sie die folgende Abfrage in den Assistenten ein:
SELECT ProductID, ProductName, SupplierID, CategoryID,
QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
ReorderLevel, Discontinued,
NTILE(4) OVER (ORDER BY UnitPrice DESC) as PriceQuartile
FROM Products
Die obige Abfrage verwendet SQL Server neue NTILE
Funktion von 2005 s, um die Ergebnisse in vier Gruppen zu unterteilen, in denen die Gruppen durch die Werte bestimmt werden, die UnitPrice
in absteigender Reihenfolge sortiert sind.
Leider weiß der Abfrage-Generator nicht, wie die OVER
Schlüsselwort (keyword) analysiert werden soll, und zeigt beim Analysieren der obigen Abfrage einen Fehler an. Geben Sie daher die obige Abfrage direkt in das Textfeld im Assistenten ein, ohne den Abfrage-Generator zu verwenden.
Hinweis
Weitere Informationen zu NTILE und SQL Server anderen Rangfolgefunktionen von 2005 finden Sie unter ROW_NUMBER (Transact-SQL) und im Abschnitt Rangfolgefunktionen in der SQL Server 2005-Onlinedokumentation.
Nachdem Sie die SELECT
Abfrage eingegeben und auf Weiter geklickt haben, werden wir vom Assistenten aufgefordert, einen Namen für die gespeicherte Prozedur anzugeben, die er erstellt. Benennen Sie die neue gespeicherte Prozedur Products_SelectWithPriceQuartile
, und klicken Sie auf Weiter.
Abbildung 5: Name der gespeicherten Prozedur Products_SelectWithPriceQuartile
(Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Zuletzt werden wir aufgefordert, die TableAdapter-Methoden zu benennen. Lassen Sie die Kontrollkästchen DataTable ausfüllen und DataTable zurückgeben aktiviert, und nennen Sie die Methoden FillWithPriceQuartile
und GetProductsWithPriceQuartile
.
Abbildung 6: Benennen Sie die TableAdapter-Methoden, und klicken Sie auf Fertig stellen (Klicken Sie, um das vollständige Bild anzuzeigen)
Wenn die SELECT
Abfrage angegeben ist und die gespeicherte Prozedur und die TableAdapter-Methoden benannt sind, klicken Sie auf Fertig stellen, um den Assistenten abzuschließen. An diesem Punkt erhalten Sie möglicherweise eine oder zwei Warnungen vom Assistenten, die besagt, dass das SQL-Konstrukt oder die OVER
SQL-Anweisung nicht unterstützt wird. Diese Warnungen können ignoriert werden.
Nach Abschluss des Assistenten sollte der TableAdapter die FillWithPriceQuartile
Methoden und GetProductsWithPriceQuartile
enthalten, und die Datenbank sollte eine gespeicherte Prozedur mit dem Namen Products_SelectWithPriceQuartile
enthalten. Nehmen Sie sich einen Moment Zeit, um zu überprüfen, ob der TableAdapter tatsächlich diese neue Methode enthält und die gespeicherte Prozedur ordnungsgemäß der Datenbank hinzugefügt wurde. Wenn Die gespeicherte Prozedur beim Überprüfen der Datenbank nicht angezeigt wird, klicken Sie mit der rechten Maustaste auf den Ordner Gespeicherte Prozeduren, und wählen Sie Aktualisieren aus.
Abbildung 7: Überprüfen, ob dem TableAdapter eine neue Methode hinzugefügt wurde
Abbildung 8: Stellen Sie sicher, dass die Datenbank die Products_SelectWithPriceQuartile
gespeicherte Prozedur enthält (Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Hinweis
Einer der Vorteile der Verwendung gespeicherter Prozeduren anstelle von Ad-hoc-SQL-Anweisungen besteht darin, dass die Spaltenlisten gespeicherter Prozeduren nicht durch die erneute Ausführung des TableAdapter-Konfigurations-Assistenten geändert werden. Überprüfen Sie dies, indem Sie mit der rechten Maustaste auf den TableAdapter klicken, im Kontextmenü die Option Konfigurieren auswählen, um den Assistenten zu starten, und dann auf Fertig stellen klicken, um ihn abzuschließen. Wechseln Sie als Nächstes zur Datenbank, und zeigen Sie die gespeicherte Products_SelectWithPriceQuartile
Prozedur an. Beachten Sie, dass die Spaltenliste nicht geändert wurde. Wenn wir Ad-hoc-SQL-Anweisungen verwendet hätten, hätte die erneute Ausführung des TableAdapter-Konfigurations-Assistenten diese Abfragespaltenliste so zurückgesetzt, dass sie der Standard Abfragespaltenliste entspricht, wodurch die NTILE-Anweisung aus der von der GetProductsWithPriceQuartile
-Methode verwendeten Abfrage entfernt wurde.
Wenn die Data Access Layer-Methode GetProductsWithPriceQuartile
aufgerufen wird, führt TableAdapter die Products_SelectWithPriceQuartile
gespeicherte Prozedur aus und fügt der ProductsDataTable
für jeden zurückgegebenen Datensatz eine Zeile hinzu. Die von der gespeicherten Prozedur zurückgegebenen Datenfelder werden den ProductsDataTable
Spalten s zugeordnet. Da ein PriceQuartile
Datenfeld aus der gespeicherten Prozedur zurückgegeben wird, wird sein Wert der ProductsDataTable
Spalte s PriceQuartile
zugewiesen.
Für die TableAdapter-Methoden, deren Abfragen kein Datenfeld zurückgeben PriceQuartile
, ist der Wert der PriceQuartile
Spalte der wert, der durch die DefaultValue
-Eigenschaft angegeben wird. Wie Abbildung 2 zeigt, ist dieser Wert auf DBNull
festgelegt, der Standardwert. Wenn Sie einen anderen Standardwert bevorzugen, legen Sie einfach die DefaultValue
Eigenschaft entsprechend fest. Stellen Sie einfach sicher, dass der DefaultValue
Wert für die Spalte s DataType
(d. h. System.Int32
für die PriceQuartile
Spalte) gültig ist.
An diesem Punkt haben wir die erforderlichen Schritte zum Hinzufügen einer zusätzlichen Spalte zu einer DataTable ausgeführt. Um zu überprüfen, ob diese zusätzliche Spalte wie erwartet funktioniert, erstellen wir eine ASP.NET Seite, auf der Name, Preis und Preisquartil der einzelnen Produkte angezeigt werden. Bevor wir dies tun, müssen wir jedoch zuerst die Geschäftslogikebene aktualisieren, um eine Methode einzuschließen, die die DAL-Methode GetProductsWithPriceQuartile
aufruft. Wir aktualisieren die BLL als Nächstes in Schritt 3 und erstellen dann die seite ASP.NET in Schritt 4.
Schritt 3: Erweitern der Geschäftslogikebene
Bevor wir die neue GetProductsWithPriceQuartile
Methode aus der Präsentationsebene verwenden, sollten wir zuerst eine entsprechende Methode zur BLL hinzufügen. Öffnen Sie die ProductsBLLWithSprocs
Klassendatei, und fügen Sie den folgenden Code hinzu:
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, false)]
public NorthwindWithSprocs.ProductsDataTable GetProductsWithPriceQuartile()
{
return Adapter.GetProductsWithPriceQuartile();
}
Wie die anderen Datenabrufmethoden in ProductsBLLWithSprocs
ruft die GetProductsWithPriceQuartile
Methode einfach die entsprechende GetProductsWithPriceQuartile
DAL-Methode auf und gibt ihre Ergebnisse zurück.
Schritt 4: Anzeigen der Preisquartilinformationen in einer ASP.NET Webseite
Mit der BLL-Ergänzung sind wir bereit, eine ASP.NET Seite zu erstellen, die das Preisquartil für jedes Produkt anzeigt. Öffnen Sie die AddingColumns.aspx
Seite im AdvancedDAL
Ordner, und ziehen Sie eine GridView aus der Toolbox auf die Designer, und legen Sie die ID
-Eigenschaft auf festProducts
. Binden Sie es über das GridView-Smarttag an eine neue ObjectDataSource mit dem Namen ProductsDataSource
. Konfigurieren Sie objectDataSource für die Verwendung der Methode s GetProductsWithPriceQuartile
der ProductsBLLWithSprocs
Klasse. Da es sich um ein schreibgeschütztes Raster handelt, legen Sie die Dropdownlisten in den Registerkarten UPDATE, INSERT und DELETE auf (Keine) fest.
Abbildung 9: Konfigurieren der ObjectDataSource für die Verwendung der ProductsBLLWithSprocs
-Klasse (Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Abbildung 10: Abrufen von Produktinformationen aus der GetProductsWithPriceQuartile
Methode (Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Nach Abschluss des Assistenten Zum Konfigurieren von Datenquellen fügt Visual Studio der GridView automatisch ein BoundField oder CheckBoxField für jedes von der -Methode zurückgegebene Datenfeld hinzu. Eines dieser Datenfelder ist PriceQuartile
die Spalte, die ProductsDataTable
wir in Schritt 1 hinzugefügt haben.
Bearbeiten Sie die GridView-Felder, und entfernen Sie alle außer , ProductName
UnitPrice
und PriceQuartile
BoundFields. Konfigurieren Sie das UnitPrice
BoundField so, dass er seinen Wert als Währung formatiert und die UnitPrice
PriceQuartile
BoundFields rechts- bzw. zentriert ausgerichtet ist. Aktualisieren Sie schließlich die verbleibenden BoundFields-Eigenschaften HeaderText
auf Product, Price und Price Quartile. Aktivieren Sie außerdem das Kontrollkästchen Sortierung aktivieren über das Smarttag von GridView.
Nach diesen Änderungen sollte das deklarative Markup gridView und ObjectDataSource wie folgt aussehen:
<asp:GridView ID="Products" runat="server" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="ProductID"
DataSourceID="ProductsDataSource">
<Columns>
<asp:BoundField DataField="ProductName" HeaderText="Product"
SortExpression="ProductName" />
<asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}"
HeaderText="Price" HtmlEncode="False"
SortExpression="UnitPrice">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="PriceQuartile" HeaderText="Price Quartile"
SortExpression="PriceQuartile">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ProductsDataSource" runat="server"
OldValuesParameterFormatString="original_{0}"
SelectMethod="GetProductsWithPriceQuartile"
TypeName="ProductsBLLWithSprocs">
</asp:ObjectDataSource>
Abbildung 11 zeigt diese Seite, wenn sie über einen Browser aufgerufen wird. Beachten Sie, dass die Produkte zunächst nach ihrem Preis in absteigender Reihenfolge bestellt werden, wobei jedem Produkt ein entsprechender PriceQuartile
Wert zugewiesen wird. Natürlich können diese Daten nach anderen Kriterien sortiert werden, wobei der Wert der Preisquartilspalte weiterhin die Rangfolge des Produkts in Bezug auf den Preis widerspiegelt (siehe Abbildung 12).
Abbildung 11: Die Produkte werden nach ihren Preisen bestellt (Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Abbildung 12: Die Produkte werden nach ihrem Namen bestellt (Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Hinweis
Mit einigen Codezeilen konnten wir die GridView erweitern, sodass die Produktzeilen basierend auf ihrem PriceQuartile
Wert eingefärbt werden. Wir könnten diese Produkte im ersten Quartil hellgrün färben, jene im zweiten Quartil ein hellgelb usw. Ich ermutige Sie, sich einen Moment Zeit zu nehmen, um diese Funktionalität hinzuzufügen. Wenn Sie eine Aktualisierung zum Formatieren einer GridView benötigen, lesen Sie das Tutorial Benutzerdefinierte Formatierung basierend auf Daten .
Ein alternativer Ansatz: Erstellen eines weiteren TableAdapter
Wie wir in diesem Tutorial gezeigt haben, können wir beim Hinzufügen einer Methode zu einem TableAdapter, die andere Datenfelder als die von der Standard Abfrage geschriebenen zurückgibt, der DataTable entsprechende Spalten hinzufügen. Ein solcher Ansatz funktioniert jedoch nur dann gut, wenn im TableAdapter eine kleine Anzahl von Methoden vorhanden ist, die unterschiedliche Datenfelder zurückgeben, und wenn diese alternativen Datenfelder nicht zu stark von der Standard Abfrage abweichen.
Anstatt der DataTable Spalten hinzuzufügen, können Sie stattdessen dem DataSet einen weiteren TableAdapter hinzufügen, der die Methoden aus dem ersten TableAdapter enthält, die unterschiedliche Datenfelder zurückgeben. In diesem Tutorial hätten wir dem PriceQuartile
DataSet einen zusätzlichen TableAdapter mit dem Namen ProductsWithPriceQuartileTableAdapter
hinzufügen können, der die Products_SelectWithPriceQuartile
gespeicherte Prozedur als Standard Abfrage verwendet hat, anstatt die Spalte ProductsDataTable
hinzuzufügen (wo sie nur von der GetProductsWithPriceQuartile
-Methode verwendet wird). ASP.NET Seiten, die Produktinformationen mit dem Preisquartil abrufen mussten, verwenden, ProductsWithPriceQuartileTableAdapter
während diejenigen, die nicht waren, weiterhin verwenden ProductsTableAdapter
konnten.
Durch Das Hinzufügen eines neuen TableAdapters bleiben die DataTables untarnished und ihre Spalten Spiegel die Datenfelder, die von ihren TableAdapter-Methoden zurückgegeben werden. Zusätzliche TableAdapters können jedoch wiederholte Aufgaben und Funktionen einführen. Wenn beispielsweise diese ASP.NET Seiten, auf denen die PriceQuartile
Spalte angezeigt wurde, auch Unterstützung für Einfüge-, Update- und Löschunterstützung bereitstellen müssten, müssten die ProductsWithPriceQuartileTableAdapter
Eigenschaften , UpdateCommand
und DeleteCommand
ordnungsgemäß konfiguriert seinInsertCommand
. Während diese Eigenschaften das ProductsTableAdapter
s Spiegel würden, führt diese Konfiguration einen zusätzlichen Schritt ein. Darüber hinaus gibt es jetzt zwei Möglichkeiten, ein Produkt zu aktualisieren, zu löschen oder der Datenbank hinzuzufügen – über die ProductsTableAdapter
Klassen und ProductsWithPriceQuartileTableAdapter
.
Der Download für dieses Tutorial enthält eine ProductsWithPriceQuartileTableAdapter
Klasse im DataSet, die NorthwindWithSprocs
diesen alternativen Ansatz veranschaulicht.
Zusammenfassung
In den meisten Szenarien geben alle Methoden in einem TableAdapter denselben Satz von Datenfeldern zurück, aber es gibt Zeiten, in denen eine oder zwei bestimmte Methoden ein zusätzliches Feld zurückgeben müssen. Beispielsweise haben wir im Tutorial Master/Detail Using a Bulleted List of Master Records with a Details DataList eine Methode hinzugefügt, die CategoriesTableAdapter
zusätzlich zu den Datenfeldern der Standard Abfrage ein NumberOfProducts
Feld zurückgegeben hat, das die Anzahl der mit den einzelnen Kategorien verknüpften Produkte angibt. In diesem Tutorial haben wir uns mit dem Hinzufügen einer Methode in der befasst, die ProductsTableAdapter
zusätzlich zu den Datenfeldern der Standard Abfrage ein PriceQuartile
Feld zurückgegeben hat. Um zusätzliche Datenfelder zu erfassen, die von den TableAdapter-Methoden zurückgegeben werden, müssen wir der DataTable entsprechende Spalten hinzufügen.
Wenn Sie das manuelle Hinzufügen von Spalten zur DataTable planen, wird empfohlen, dass der TableAdapter gespeicherte Prozeduren verwendet. Wenn der TableAdapter Ad-hoc-SQL-Anweisungen verwendet, wird jedes Mal ausgeführt, wenn der TableAdapter-Konfigurations-Assistent alle Methodendatenfeldlisten rückgängig machen zu den Datenfeldern ausführt, die von der Standard-Abfrage zurückgegeben werden. Dieses Problem erstreckt sich nicht auf gespeicherte Prozeduren, weshalb sie empfohlen werden und in diesem Tutorial verwendet wurden.
Viel Spaß beim Programmieren!
Zum Autor
Scott Mitchell, Autor von sieben ASP/ASP.NET-Büchern und Gründer von 4GuysFromRolla.com, arbeitet seit 1998 mit Microsoft-Webtechnologien. Scott arbeitet als unabhängiger Berater, Trainer und Autor. Sein neuestes Buch ist Sams Teach Yourself ASP.NET 2.0 in 24 Stunden. Er kann unter mitchell@4GuysFromRolla.comoder über seinen Blog erreicht werden, der unter http://ScottOnWriting.NETzu finden ist.
Besonderen Dank an
Diese Tutorialreihe wurde von vielen hilfreichen Prüfern überprüft. Hauptprüfer für dieses Tutorial waren Randy Schmidt, Jacky Goor, Bernadette Leigh und Hilton Giesenow. Möchten Sie meine anstehenden MSDN-Artikel lesen? Wenn dies der Fall ist, legen Sie eine Zeile unter abmitchell@4GuysFromRolla.com.