Hej! Såhär lägger du till en kolumn i din DataTable Om jag gör så här så kan jag tydligen lägga till en kolumn, för jag får inget felmeddelande. Men det går inte att fylla med värde??: xaphod, xaphod, Torska,DataSet - lägga till kolumn
Ska visa en DataGrid där värden tas från en databas. Men i DataGridden vill jag lägga till en kolumn på varje rad som visar positionen i datagriden, ex 1,2.3, osv. Därför har jag först plockat ut datat som ett DataSet för att ändra innan jag binder det till DataGridden. Men hur ändrar jag DataSetet? Skulle helst vilja ha en ny kolumn mellan rows(x)(0) och rows(x)(1), men är lite rädd för att det kommer att fucka upp min kod mot DataGridden sen, så i sämsta fall duger det med att lägga till en kolumn i slutet.
Här är koden så långt:
<code>
dim a as integer
dim s as string
dim position as integer
for a=0 to (ds.Tables("data").Rows.Count()-1)
'Här måste den kolumnen in på nåt sätt?
position=a+1
dim myColumn as DataColumn(position)
'Lägg till den nya kolumnen till aktuell rows(a)
???
next
</code>
Resultatet ska alltså bli en DataGrid typ:
1 | Kalle
2 | Olle
Mvh /xaphodSv: DataSet - lägga till kolumn
ds.Tables("data").Columns.Add("Kostnad", typeof(Double))
Jag tog exemplet från C#, men tror jag har "konverterat" rätt...
/JohanSv: DataSet - lägga till kolumn
<code>
ds.tables("data").Columns.Add("COLUMN", Type.GetType("System.String"),String.empty)
for a=0 to (ds.Tables("data").Rows.Count()-1)
position=a+1
ds.Tables("data").rows(a)(5)= "PosNr: " & position
next
</code>Sv: DataSet - lägga till kolumn
Låt mig göra ett antagande: om du kör din kod så får du inget fel första gången men om du försöker köra den igen så får du ett fel som säger att du redan har en column med namnet <b>COLUMN</b>? Jag skulle tro att det helt enkelt är så att du glömmer att informera din <b>DataGrid</b> att den nu har en ny kolumn att visa.
När du lägger till en ny kolumn så måste du ägen lägga till en <b>DataGridTableStyle</b> för den kolumnen så gridden vet hur den skall visa informationen från den nya datakolumnen. Skulle detta kunna vara ditt problem? Tror du att du grejar det själv eller vill du ha lite kod?
//AndreasSv: DataSet - lägga till kolumn
Här kommer lite kod också, hade inget bättre för mig så =) Koden nedan förutsätter att du har en <b>DataGridTableStyle</b> med <b>Info</b> som <b>MappingName</b>. Jag valde också att bara skapa ett <b>DataTable</b> direkt, utan att lägga det i ett <b>DataSet</b> för att göra det enklare.
[C#]
DataTable ds = (DataTable)dataGrid1.DataSource;
ds.Columns.Add("COLUMN", typeof(string), string.Empty);
for(int a=0; a < ds.Rows.Count; a++)
{
int position= a+1 ;
ds.Rows[a][5] = "PosNr: " + position;
}
DataGridTextBoxColumn col = new DataGridTextBoxColumn();
col.MappingName = "COLUMN";
col.HeaderText = "NyKolumn";
col.Width = 50;
dataGrid1.TableStyles["info"].GridColumnStyles.Add(col);
[VB.NET]
Dim ds As DataTable = CType(DataGrid1.DataSource, DataTable)
ds.Columns.Add("COLUMN", GetType(String), String.Empty)
Dim a As Integer
Dim position As Integer
For a = 0 To ds.Rows.Count - 1
position = a + 1
ds.Rows.Item(a).Item(5) = "PosNr: " & position
Next
Dim col As DataGridTextBoxColumn = New DataGridTextBoxColumn
col.MappingName = "COLUMN"
col.HeaderText = "NyKolumn"
col.Width = 50
DataGrid1.TableStyles.Item("Info").GridColumnStyles.Add(col)
Hoppas det löser sig!
//Andreas
Sv: DataSet - lägga till kolumn
//Från doc
DataColumn col = new DataColumn();
col.DataType = System.Type.GetType("System.Int32");
col.AutoIncrement = true;
col.AutoIncrementSeed = 1;
col.AutoIncrementStep = 1;
// Add the column to a new DataTable.
DataTable tbl = new DataTable("MyTable");
tbl.Columns.Add(col);
Sv: DataSet - lägga till kolumn
Om du tittar bak i trådhistoriken så ser du att han vet redan hur man lägger till en kolumn i ditt <b>DataTable</b> och han ville inte skapa en autoincreament kolumn. Problemet ligger i att han troligen inte skapar någon vy information för kolumnen i sin <b>DataGrid</b>.
//Andreas