Veröffentlicht 12. Oktober 200816 j Hallo, wie kann ich in ein DataSet nachträglich eine ID-Spalte einfügen, die von 0 beginnend hochzählt? Die Daten im DataSet kommen aus einer Datenbank und auf das Stored Procedure habe ich leider keinen Zugriff, sonst würde ich es direkt dort ändern. Ich habe leider überhaupt keinen Ansatz bislang. Danke schon mal
13. Oktober 200816 j Im Dataset nicht, aber in den Tabellen vom Dataset über die Cols Eigenschaft. [Edit] Wobei nicht gesagt sein muss, dass dies mit dem Primärschlüssel in der Tabelle übereinstimmt. Bearbeitet 13. Oktober 200816 j von TDM
13. Oktober 200816 j jop erst addest du eine zusätzliche spalte dann machst du eine schleife, die dir deine werte jeweils um eine col nach hinten setzt und somit kannst du die erste als id verwenden
13. Oktober 200816 j Hi, also ich habe das gerade wie folgt gelöst: DataSet ds = new DataSet(); adapter.fill(ds); DataSet newDs = new DataSet(); DataTable dt = newDs.Tables.Add(); DataColumn dataColumn = dt.Columns.Add("Nr."); dataColumn.AutoIncrement = true; foreach (DataColumn dc in ds.Tables[0].Columns) { dt.Columns.Add(dc.ColumnName); } foreach (DataRow dw in ds.Tables[0].Rows) { dt.ImportRow(dw); } Ist das so ok? Oder gibt es vielleicht noch eine elegantere Lösung?
13. Oktober 200816 j ich würds vielleicht eher so machen: DataSet ds = new DataSet(); adapter.fill(ds); DataTable table = ds.Tables[0]; DataColumn column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "Nr"; column.AutoIncrement = true; column.ReadOnly = true; //<- Nach eigenem Ermessen column.Unique = true; //<- Nach eigenem Ermessen table.Columns.Add(column)
13. Oktober 200816 j So in der Art hatte ich mir das auch schon gedacht. Allerdings habe ich dann das Problem, dass die hinzugefugte Spalte nicht die erste Spalte ist, sondern dann die letzte Spalte ist. Oder gibt es hierfür auch ne Möglichkeit, die ich noch nicht sehe?
13. Oktober 200816 j Hm Sorry, ich kann dir gerade nicht folgen. Oder vielleicht habe ich mich falsch ausgedrückt?! Wenn ich die neue Column an die DataTable anfüge, so wie du es vorgeschlagen hast, habe ich das Problem, dass die neue Column nicht an erster Stelle steht (...Tables[0].Columns[0] - ist dann nicht meine neu angefügte Spalte) Meine Frage war, ob ich es irgendwie hinbekomme, dass die neue Spalte an Position 0 steht. Ich hoffe, das ist jetzt etwas verständlicher ausgedrückt
13. Oktober 200816 j leg doch ein tempoäreres datatable an; in dem du zuerst die id spalte hinzufügst und dann die restlichen aus dem anderen datatable
13. Oktober 200816 j ach so meinst du das... Ja, dann entweder wie xk4fu sagt eine temporäre DataTable benutzen oder via AddRange einen Array zusammenbasteln, der angibt wo welche Spalte ist. PS: Ich dächte den Index könnte man auch irgendwo setzen. :beagolisc
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.