Hinzufügen von zusätzlichen DataTable-Spalten (VB)
von Scott Mitchell
Wenn Sie den TableAdapter-Assistenten zum Erstellen eines typisierten DataSets verwenden, 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 durch die TableAdapter-Standard Abfrage bestimmt. Wenn die Standard Abfrage beispielsweise die Datenfelder A, B und C zurückgibt, enthält die DataTable drei entsprechende Spalten mit den Namen A, B und C. Zusätzlich zu seiner 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
s-Standard-Abfrage, 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 zurückgeben als die in der Standard-Abfrage angegebenen. Wenn eine TableAdapter-Methode zusätzliche Datenfelder zurückgeben muss, sollten wir das Schema der DataTable entsprechend erweitern. Im Tutorial Master/Detail Using a Bulleted List of Master Records with a Details DataList (Master/Detail Using a Bullet List of Master Records with a Details DataList) haben wir eine Methode hinzugefügt, die die CategoriesTableAdapter
CategoryID
datenfelder , und Description
zurückgegeben hat, CategoryName
die in der Standard Abfrage definiert sind, plus NumberOfProducts
, ein zusätzliches Datenfeld, das die Anzahl der mit jeder Kategorie verknüpften Produkte angibt. Wir haben manuell eine neue Spalte hinzugefügt, CategoriesDataTable
um den NumberOfProducts
Datenfeldwert aus dieser neuen Methode zu erfassen.
Wie im Tutorial Hochladen von Dateien erläutert, ist bei TableAdapters, die Ad-hoc-SQL-Anweisungen verwenden und Methoden haben, deren Datenfelder nicht genau mit der Standard Abfrage übereinstimmen, sehr vorsichtig. Wenn der TableAdapter-Konfigurations-Assistent erneut ausgeführt wird, werden alle TableAdapter-Methoden aktualisiert, sodass ihre Datenfeldliste mit der Standard Abfrage übereinstimmt. Folglich rückgängig machen alle Methoden mit benutzerdefinierten Spaltenlisten in die Spaltenliste der Standard Abfrage und geben nicht die erwarteten Daten zurück. 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 TableAdapter-Tabellenadapters finden Sie in den Tutorials Erstellen neuer gespeicherter Prozeduren für die typisierten DataSets-Tabellenadapter und Verwenden vorhandener gespeicherter Prozeduren .
Schritt 1: Hinzufügen einerPriceQuartile
Spalte zumProductsDataTable
Im Tutorial Erstellen neuer gespeicherter Prozeduren für das typisierte DataSet s TableAdapters-Tutorial haben wir ein typisiertes DataSet namens 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 jeweilige 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
n, die verwandte Daten aus den Categories
Tabellen oder Suppliers
pullen. Daher verfügt die über ProductsDataTable
eine entsprechende Spalte für jedes Feld in der Products
Tabelle.
In diesem Tutorial fügen wir dem eine -Methode hinzu, die ProductsTableAdapter
GetProductsWithPriceQuartile
alle Produkte zurückgibt. Zusätzlich zu den Standard-Produktdatenfeldern enthält auch ein PriceQuartile
Datenfeld, GetProductsWithPriceQuartile
das angibt, unter welchem Quartil der Preis des Produkts fällt. Beispielsweise haben die 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 gedanken über die Erstellung der gespeicherten Prozedur zum Zurückgeben dieser Informationen machen, müssen wir zuerst aktualisieren, um eine Spalte einzuschließen ProductsDataTable
, die die PriceQuartile
Ergebnisse enthält, 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 (ProductsDataTable
Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Dadurch wird der DataTable eine neue Spalte mit dem Namen Column1 vom Typ System.String
hinzugefügt. Wir müssen den Namen dieser Spalte in 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 im Eigenschaftenfenster die Name
Eigenschaft auf PriceQuartile und die DataType
-Eigenschaft auf festSystem.Int32
.
Abbildung 2: Festlegen der Neuen Spalte und Name
DataType
der 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, wenn 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 nun aktualisiert ProductsDataTable
wurde, um die PriceQuartile
Spalte einzuschließen, können wir 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 ad-hoc-SQL-Anweisungen oder eine neue oder vorhandene gespeicherte Prozedur verwendet werden sollen. 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 Bild in voller Größe anzuzeigen)
Auf dem nachfolgenden Bildschirm, der in Abbildung 4 dargestellt ist, fragt uns der Assistent, welche Art von Abfrage 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, 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, um die Ergebnisse in vier Gruppen zu unterteilen, wobei 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, fordert der Assistent uns auf, einen Namen für die gespeicherte Prozedur anzugeben, die er erstellen wird. Benennen Sie die neue gespeicherte Prozedur Products_SelectWithPriceQuartile
, und klicken Sie auf Weiter.
Abbildung 5: Benennen der gespeicherten Prozedur Products_SelectWithPriceQuartile
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Schließlich 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 hier, um das Bild in voller Größe anzuzeigen)
Klicken Sie mit der SELECT
angegebenen Abfrage und der gespeicherten Prozedur und den TableAdapter-Methoden 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: Sicherstellen, 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 der gespeicherten 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 Spaltenliste der Abfrage 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 s-Methode GetProductsWithPriceQuartile
aufgerufen wird, führt tableAdapter die Products_SelectWithPriceQuartile
gespeicherte Prozedur aus und fügt dem 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 von der gespeicherten Prozedur ein PriceQuartile
Datenfeld zurückgegeben wird, wird dessen Wert der ProductsDataTable
Spalte s PriceQuartile
zugewiesen.
Für die TableAdapter-Methoden, deren Abfragen kein Datenfeld zurückgeben PriceQuartile
, ist der PriceQuartile
Wert der 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 nur 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 Function GetProductsWithPriceQuartile() As NorthwindWithSprocs.ProductsDataTable
Return Adapter.GetProductsWithPriceQuartile()
End Function
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.