Úpravy dat v datových sadách
Publikováno: duben 2016
Úpravy dat v datových tabulkách tak, jak upravit data v tabulce v libovolné databázi – proces může zahrnovat vložení, aktualizace a odstranění záznamů v tabulce. Ve formuláři vázané na data můžete určit, která pole jsou uživatelsky upravitelný. V těchto případech datové vazby infrastruktury zpracovává všechny sledování změn tak, aby změny lze odeslat zpět do databáze později. Pokud programově provést úpravy dat a máte v úmyslu odesílají tyto změny zpět do databáze, musíte použít objektů a metod, které provádí sledování změn pro vás.
Kromě změna na skutečná data, můžete se také dotázat DataTable vrátit určité řádky dat, například jednotlivé řádky, určitých verzí sady řádků (původní a navrhovaná), pouze řádky, které se změnily a řádků s chybami.
Chcete-li upravit řádky v datové sadě
Chcete-li upravit existující řádek v DataTable, budete muset vyhledejte DataRow chcete upravit a potom přiřadit aktualizované hodnoty požadovaných sloupců.
Pokud si nejste jisti, index řádku, na kterou chcete upravit, použijte FindBy
metody na hledání podle primárního klíče.
NorthwindDataSet.CustomersRow customersRow =
northwindDataSet1.Customers.FindByCustomerID("ALFKI");
customersRow.CompanyName = "Updated Company Name";
customersRow.City = "Seattle";;
Dim customersRow As NorthwindDataSet.CustomersRow
customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI")
customersRow.CompanyName = "Updated Company Name"
customersRow.City = "Seattle"
Pokud znáte index řádku, můžete získat přístup a upraví řádků takto:
northwindDataSet1.Customers[4].CompanyName = "Updated Company Name";
northwindDataSet1.Customers[4].City = "Seattle";
NorthwindDataSet1.Customers(4).CompanyName = "Updated Company Name"
NorthwindDataSet1.Customers(4).City = "Seattle"
Vložení nového řádku do datové sady
Aplikace používající ovládací prvky vázané na data obvykle přidávat nové záznamy prostřednictvím "Přidat nové tlačítko na BindingNavigator – ovládací prvek.
Ruční přidání nových záznamů do datové sady, vytvořte nový datový řádek voláním metody na objektu DataTable. Přidání řádku k DataRow kolekce (Rows) z DataTable
NorthwindDataSet.CustomersRow newCustomersRow =
northwindDataSet1.Customers.NewCustomersRow();
newCustomersRow.CustomerID = "ALFKI";
newCustomersRow.CompanyName = "Alfreds Futterkiste";
northwindDataSet1.Customers.Rows.Add(newCustomersRow);
Dim newCustomersRow As NorthwindDataSet.CustomersRow
newCustomersRow = NorthwindDataSet1.Customers.NewCustomersRow()
newCustomersRow.CustomerID = "ALFKI"
newCustomersRow.CompanyName = "Alfreds Futterkiste"
NorthwindDataSet1.Customers.Rows.Add(newCustomersRow)
Chcete-li zachovat informace, že datová sada potřebuje k odesílání aktualizací ke zdroji dat, použijte Delete Metoda odebere řádky v tabulce. Například, pokud vaše aplikace používá TableAdapter (nebo DataAdapter), je adaptér Update
metoda odstraní řádků v databázi, které mají RowState z Deleted.
Pokud aplikace není nutné odesílat aktualizace zpět do zdroje dat, pak je možné odebrat záznamy přímým přístupem k řádku shromažďování dat (Remove).
K odstranění záznamů z tabulky dat
-
Tato metoda se neodeberou fyzicky záznamu; Místo toho označí záznam pro odstranění.
Poznámka
Pokud se zobrazí vlastnosti count DataRowCollection, výsledný počet zahrnuje záznamy, které jsou označené k odstranění. Získat přesný počet pouze záznamy, které nejsou označené k odstranění, lze Projděte kolekci, prohlížení RowState Vlastnosti každý záznam (mají záznamy, které jsou označené k odstranění RowState z Deleted). Alternativně můžete vytvořit zobrazení dat pro datovou sadu, která filtry na základě řádku stavů a zjistit vlastnost count odtud.
Následující příklad ukazuje způsob volání Delete Metoda označit první řádek v
Customers
tabulky jako odstraněné:northwindDataSet1.Customers.Rows[0].Delete();
NorthwindDataSet1.Customers.Rows(0).Delete()
Určení, zda existují změnit řádky
Provedení změn záznamů v datové sadě, informace o tyto změny uloženy, dokud je nepotvrdíte. Změny se potvrdí při volání AcceptChanges
Metoda datovou sadu, tabulka dat nebo volání Update
Metoda adaptér TableAdapter nebo data.
Změny jsou sledovány v každý řádek dat dvěma způsoby:
Každý řádek dat obsahuje informace o tom, jeho RowState (například Added, Modified, Deleted, Unchanged).
Každý řádek změněná data obsahuje více verzí tohoto řádku (DataRowVersion); původní (před změny) a aktuální (po změně) verze – kterému budete mít přístup. V době, kdy čeká na vyřízení změnu (čas, který dokáže odpovídat na RowChanging událostí), třetí verzi – navrhované verze – je také k dispozici. Další informace naleznete v tématu Postupy: Získání konkrétních verzí DataRow.
HasChanges Vrací metoda datové sady true
Pokud byly provedeny změny v datové sadě. Po zjištění, zda existují změněných řádků, můžete zavolat GetChanges
metodu DataSet nebo DataTable vrátit sadu změněných řádků. Další informace naleznete v tématu Postupy: Načítání změněných řádků.
Chcete-li zjistit, pokud byly provedeny žádné změny do všech řádků
Volání HasChanges Metoda datové sady zkontrolujete změněna řádků.
Následující příklad ukazuje, jak zkontrolovat návratovou hodnotou z HasChanges Metoda ke zjištění, zda jsou všechny změněných řádků v datové sadě s názvem
NorthwindDataset1
.if (northwindDataSet1.HasChanges()) { // Changed rows were detected, add appropriate code. } else { // No changed rows were detected, add appropriate code. }
If NorthwindDataSet1.HasChanges() Then ' Changed rows were detected, add appropriate code. Else ' No changed rows were detected, add appropriate code. End If
Určení typu změny
Můžete také zkontrolovat, chcete-li zobrazit, jaké změny byly provedeny v datové sadě předáním hodnoty z DataRowState výčet, který HasChanges Metoda.
Určit, jaký typ změny byly provedeny v řádku
Předat DataRowState hodnota, která se HasChanges Metoda.
Následující příklad ukazuje, jak zkontrolovat datovou sadu s názvem
NorthwindDataset1
k určení, pokud byly všech nových řádků do ní přidat:if (northwindDataSet1.HasChanges(DataRowState.Added)) { // New rows have been added to the dataset, add appropriate code. } else { // No new rows have been added to the dataset, add appropriate code. }
If NorthwindDataSet1.HasChanges(DataRowState.Added) Then ' New rows have been added to the dataset, add appropriate code. Else ' No new rows have been added to the dataset, add appropriate code. End If
K vyhledání řádků s chybami
Při práci s jednotlivých sloupců a řádků dat, může nastat situace, kdy záznam obsahuje chybu. Můžete zkontrolovat HasErrors
Vlastnosti k určení, zda existují chyby v DataSet, DataTable, nebo DataRow.
Zkontrolujte
HasErrors
vlastnosti chcete zobrazit, pokud nejsou žádné chyby v datové sadě.Pokud
HasErrors
vlastnost jetrue
, iterovat kolekce tabulek, pak se řádky, které najde řádek s chybou.private void FindErrors() { if (dataSet1.HasErrors) { foreach (DataTable table in dataSet1.Tables) { if (table.HasErrors) { foreach (DataRow row in table.Rows) { if (row.HasErrors) { // Process error here. } } } } } }
Private Sub FindErrors() Dim table As Data.DataTable Dim row As Data.DataRow If DataSet1.HasErrors Then For Each table In DataSet1.Tables If table.HasErrors Then For Each row In table.Rows If row.HasErrors Then ' Process error here. End If Next End If Next End If End Sub