Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Vista verticale su un datatable
mercoledì 18 maggio 2005 - 12.35
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 18 mag 2005 - 12:35
Ciao a tutti,
mi serve filtrare una tabella per colonne. Avevo intenzione di creare una vista da usare come datasource di una griglia in cui visualizzare solo la colonna Nome, ma cercando il funzionamento di un dataview non riesco a capire se è possibile filtrare per colonna. Mi pare di no cmq: se è davvero così come posso fare? mi sembra strano che debba creare un'altra tabella con una SELECT> che considera solo quella colonna.
Grazie
Salo
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 18 mag 2005 - 13:12
Ti faccio un esempio semplice per capirci:
ID Nome
1 Area1
2 Area2
3 Area3
voglio avere:
Nome
Area1
Area2
Area3
sulla documentazione del dataview ho trovato rowfilter, ma non un "colfilter".
Forse sbaglio io, ma mi sembra che con rowfilter non possa fare una vista come nell'es. sopra, ma solo tipo:
ID Nome
2 Area2
filtrando per ID=2
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 18 mag 2005 - 14:51
Non era quello che intendevo. forse così si capisce meglio:
ho una tabella che è caricata con la query: SELECT * FROM Area
e voglio avere una vista con i dati ottenibili dalla selezione: SELECT Nome FROM Area
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mer 18 mag 2005 - 15:17
Ciao
Ma questa "vista verticale" ti serve in un datagrid? Se si allora ho la soluzione:
carichi tutte le colonne tramite la select * FROM tabella come già facevi, poi tramite una funzione setti l'orgine dati della griglia e gli dici quale colonna vuoi vedere: Ti ho postato un po di codice
Private sub SetGrid(Byval FieldName as string, Byval CaptionName as string)
Dim DataGridTableStyleGen As New DataGridTableStyle
Dim ColumnStyleGen As DataGridColumnStyle
DataGridTableStyleGen = New DataGridTableStyle
DataGridTableStyleGen.MappingName = View.Table.TableName
'add 1st column style.
ColumnStyleGen = New DataGridTextBoxColumn
ColumnStyleGen.MappingName = "Elemento"
ColumnStyleGen.HeaderText = "Elemento"
ColumnStyleGen.Width = 150
DataGridTableStyleGen.GridColumnStyles.Add(ColumnStyleGen)
end sub
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 18 mag 2005 - 15:18
Ciao,
non capisco bene a che fine vuoi eliminare una colonna, cioè ti serve questa colonna o non ti serve ? Perchè se vuoi bindare il risultato su una DataGrid puoi comunque decidere in una seconda fase di non far apparire la prima colonna.
Oppure, il DataTable lo usi ancora ? Se non error tramite la Collection Columns puoi procedere eliminando di netto tutta la colonna.
ciao
david
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mer 18 mag 2005 - 15:20
Scusa ma prima è partito involontariaente la risposta
Private sub SetGrid(Byval FieldName as string, Byval CaptionName as string)
Dim DataGridTableStyleGen As New DataGridTableStyle
Dim ColumnStyleGen As DataGridColumnStyle
DataGridTableStyleGen = New DataGridTableStyle
DataGridTableStyleGen.MappingName = Tabelladati
'add column style.
ColumnStyleGen = New DataGridTextBoxColumn
ColumnStyleGen.MappingName = FieldName
ColumnStyleGen.HeaderText = CaptionName
ColumnStyleGen.Width = 150
DataGridTableStyleGen.GridColumnStyles.Add(ColumnStyleGen)
DataGrid1.TableStyles.Clear()
DataGrid1.TableStyles.Add(DataGridTableStyleGen)
DataGrid1.DataSource = tabelladati
end sub
con FieldName intendo il nome della colonna all'intenro del database
Con CaptionName il nome di colonna visualizzato
Ciao
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 18 mag 2005 - 15:56
grazie a tutti x le risporte!
Per rispondere a David, nel programma mi servono tutte le colonne della tabella Area, solo che devo visualizzare nella griglia solo il nome delle varie aree. l'idea è che l'utente debba fare doppio click su un nome per aprire un form che permette la modifica dei vari campi dell'area scelta.
Volevo evitare di assegnare alla griglia l'intera tabella per poi rendere invisibili una per una tutte le colonne meno "Nome". Avevo quindi pensato di fare una semplice vista composta da quell'unica colonna. Solo non riesco a creare la vista xché rowfilter ovviamente filtra per riga ma non per colonna! Eppure quando ho studiato le viste mi pare si potesse fare una selezione verticale per colonne. Non mi sembra neanche una cosa molto strana, quindi ho l'impressione di non aver capito a fondo come usare un DataView.
Ho risolto con l'artificio di non mostrare le altre colonne:
'rendo visibile solo la colonna "Nome" ( che è la 2° Colonna )
For i = 0 To grdAree.Cols.Count - 1
If Not i = 2 Then
grdAree.Cols(i).Visible = False
End If
Next i
ma non mi piace molto e cmq preferirei capire cosa sbaglio. Solo uso la FlexGrid ( di Component1 ) e il codice che mi avete postato non funziona xché la griglia non ha la proprietà TableStyles!
Indipendentemente dalla griglia usata, non è possibile farlo a livello di Vista?
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !