Jag har ett otypat dataset där jag hämtar ett visst antal fields från databasen. du kan ta bort de kolumner du inte vill använda med ".Remove" eller ".RemoveAt" Hej! Jag har tidigare testat både remove på datasetet och hide i columnmapping men det går inte på pirmärnycklarna! Jag har inget problem med detta när jag testar (primärnyckel (au_id)). Kan du skicka en bit kod som återskapar problemet så kan jag kolla på det... så då :) Columnmapping = hidden....här använde jag en grid (ultraGrid) från Infragistics Dataset visa färre kolumner
Alla fields ska jag visa i ett fönster. Nu kommer problemet.: jag ska skicka vidare
datasetet till ett annat fönster där jag i en grid ska visa något färre kolumner. Hur gör jag detta på bästa sätt? Jag vill inte hålla på och giddra med gridden utan datan ska vara färdig när jag sätter datasource på gridden.
För tillfället har jag löst det med att gå igenom rad för rad i datasetet
och lägga in i en datatable de fields jag vill ha och formatera dem på det sätt
jag vill ha dem.
Det går inte att degina datatablen och sedan sätta datasource = datasetet
för då skrivs det över och jag får alla fields i alla fall.....
Någon klok människa?
//JennySv: Dataset visa färre kolumner
<code>
sqlDataAdapter1.Fill (dataSet1);
dataSet1.Tables["Person"].Columns.Remove ("Namn");
dataSet1.Tables["Person"].Columns.Remove ("SkoStorlek");
dataGrid1.DataSource = dataSet1.Tables["Person"];
</code>
fast att hämta data för att sedan ta bort en del av det är ju lite som att åka och handla massa varor och sedan slänga det man inte vill ha när man kommer hem igen ;-P
//Roger Sv: Dataset visa färre kolumner
Ett sätt att lösa ditt problem är att använda columnmapping på den kolumn du vill gömma, sätt denna till MappingType.Hidden så kommer du inte att se den i gridden. Ber än en gång ursäkt för vb kod i ett C# forum.
Denna fråga är lysande bra och borde inte gömmas i ett C# forum. I vb.net forum förekommer oxo bra frågor som vi borde försöka få över till ett framework eller ado.net forum så att man inte missar bra frågor bara för att man valt ett visst språk. Håller någon med?
<code>
Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM AUTHORS", "server=.;database=pubs;trusted_connection=true")
ds = New DataSet()
da.Fill(ds, "authors")
da.Dispose()
Dim FixedTable As DataTable
' Antingen göra en copy eller sätta det på orginaltabellen
' FixedTable = ds.Tables("authors")
FixedTable = ds.Tables("authors").copy()
FixedTable.Columns("au_lname").ColumnMapping = MappingType.Hidden
grdSource.DataSource = ds.Tables("authors")
grdFixed.DataSource = FixedTable
</code>
Ha en lysande dag!
/MickeSv: Dataset visa färre kolumner
(Det är inte så att jag hämtar fieldsen i onödan och sedan slänger dem eftersom jag visar alla fält i första fönstret och sen återanvänder jag datasetet genom att skicka vidare det till ett annat....så jag förbrukar lite av mina handlade varor innan jag slänger dem...)
//JennySv: Dataset visa färre kolumner
Sv: Dataset visa färre kolumner
<code>
DataTable dt=new DataTable ();
sqlDataAdapter1.Fill (dt);
sqlDataAdapter1.FillSchema (dt,SchemaType.Source);
dt.PrimaryKey=null;
dt.Columns.Remove("[namn på pk]");
dataGrid1.DataSource = dt;
</code>
(problemet finns bara om man använder scheman på tabellerna...
i en helt ren datatable går det bra att ta bort pk fältet)
//RogerSv: Dataset visa färre kolumner
och där visas kolumnerna i alla fall....däremot om jag använder en vanlig datagrid funkar det bra.
Remove kan jag inte göra då jag använder tre tabeller: Customer
som kan ha flera Adress och flera Phone (som Childrows). Därför kan jag inte
ta remove på Primärnycklarna föra att hålla relations mellan tabellerna.
Dessutom kan jag inte ta bort CustomerID eftersom jag måste hämta
det när man klickar på en Customer i gridden.....
Jag får se om jag kan komma runt det på något sätt med ultraGridden
för en vanlig datagrid är inte vad jag ska använda. De är väldigt olika
utseende mässigt och kodmässigt kan man göra mycket mer med en ultragrid.
//Jenny