Update: obwohl ich das gewünschte Ergebnis habe, aber wenn die zweite Funktion auf die Datentabelle zugreifen, ist der Wert immer noch gleich Es ist ein sequentielles Programm mit zwei Funktionen in verschiedenen Klassen. Erste Sortier- und zweite Ersetzungsfunktion. So sollte es den Wert sortieren und andere Funktion sollte in der Lage sein, die sortierte Tabelle abzurufen, aber wenn es die Datentabelle abruft, gibt es die unsortierte Tabelle.Update: Ergebnis wird nicht in den Originaldatensatz übertragen. Sortieren von Zeilen im Datensatz mit C#
Ich habe acceptchanges() verwendet, aber es gibt auch das gleiche Ergebnis.
Das Programm versucht, die Tabelle nach dem erforderlichen Feld zu sortieren, und das Ergebnis wird in der Variablen Sorted table gespeichert. Ich versuche, dies zu den ursprünglichen i-e sourceTables zu kopieren, aber es funktioniert nicht und fügt eine andere Reihe hinzu, anstatt zu aktualisieren [wie unten gezeigt]. Ich habe versucht, ganze Tabelle zu kopieren, aber es funktioniert nicht und durch Hinzufügen von Zeilen gibt es nicht das erforderliche Ergebnis. Ich habe verschiedene Methoden verwendet, aber ich bekomme nicht das gewünschte Ergebnis.
List<DataTable> sourceTables = context.GetDataByTable(sourceTable.StringValue);
List<DataTable> targetTables = context.GetDataByTable(targetTable.StringValue, sourceTables.Count);
string orderDesc= orderField.StringValue + " DESC";
for (int i = 0; i < sourceTables.Count; i++)
{
DataView dv = sourceTables[i].DefaultView;
if (orderDirection.StringValue == OrderDirectionAsc)
{
// for Sorting in Ascending Order
dv.Sort = orderField.StringValue;
}
else
{
// for Sorting in Descending Order
dv.Sort = orderDesc;
}
DataTable sortedTable = dv.ToTable();
DataTable dttableNew = sortedTable.Clone();
//sourceTables[i] = sortedTable.Copy();
//targetTables[i] = dv.ToTable();
//targetTables[i] = sortedTable.Copy();
// foreach (DataRow dr in sortedTable.Rows)
//// targetTables[i].Rows.Add(dr.ItemArray);
//}
for (int j = 0; j < sourceTables[i].Rows.Count; j++)
{
if (sourceTable.GetValue().ToString() == targetTable.GetValue().ToString())
{
foreach (DataRow dr in sortedTable.Rows)
{
targetTables[i].Rows.Add(dr.ItemArray);
}
else
{
foreach (DataRow dr in sortedTable.Rows)
{
targetTables[i].Rows.Add(dr.ItemArray);
}
// targetTables[i] = sortedTable.Copy(); does not work
//foreach (DataRow drtableOld in sortedTable.Rows)
//{
// targetTables[i].ImportRow(drtableOld);
//}
Statt die ersten Werte zu ersetzen, es ist das Hinzufügen von mehr Reihen
jede Hilfe
Warum Sie die sortierte Ansicht nach etwas kopieren, tun müssen? – Plutonix
Ich versuche die Tabelle zu sortieren. Da die Sortierfunktion bei der Datentabelle nicht funktioniert. Nachdem ich die Ansicht sortiert habe, versuche ich, die ursprüngliche Datenansicht durch die Ansicht zu ersetzen. –
Wenn ich quellTabellen [i] = dv.ToTable() verwende sind die Änderungen nur lokal –