Come potrete immaginare non è poi così
diverso da come si fa nel controllo DataGrid "standard" del Framework 1.1...
Comunque, cercando come nascondere graficamente una
colonna di un controllo DataGrid, sono partito da questo link, How do I hide a column in the .NET Winforms
Datagrid?, che si riferisce al controllo Windows
Forms, in cui sono fondamentalmente indicati due metodi:
1) Formattare il controllo DataGrid attraverso la proprietà TableStyles.
2) Impostare la proprietà ColumnMapping delle colonne della DataSource come MappingType.Hidden.
Quest'ultimo metodo, estremamente veloce e pratico sulla
carta, con il Compact Framework non sembra funzionare (forse a causa del fatto
che il controllo DataGrid Compact Framework non supporta i DataSet, anche se ho i miei dubbi che sia
questo il motivo...).
In effetti il tutto si sarebbe risolto nello scrivere una
riga di codice:
// Inizializzazione DataGrid e DataSource...
//...
//
Imposto il ColumnMapping
dataSource.Columns["NomeColonnaDaNascondere"].ColumnMapping
= MappingType.Hidden;
dataGrid.DataSource = dataSource;
Occorre quindi procedere obbligatoriamente con il primo
metodo, ed applicarsi (poco) di più con il DataGridColumnStyle.
In effetti anche in questo caso il codice si riduce a
poche righe:
// Inizializzazione DataSource e DataGrid...
// ...
// Creazione dello stile del controllo DataGrid
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName = dataSource.TableName;
// Creazione dello stile PER TUTTE LE COLONNE:
// le colonne non inizializzate non saranno inserite nella DataGrid
foreach(DataColumn column in dataSource.Columns)
{
string columnName = column.ColumnName;
DataGridColumnStyle columnStyle = new DataGridTextBoxColumn();
columnStyle.MappingName = columnName;
columnStyle.HeaderText = columnName;
columnStyle.NullText = String.Empty;
// Nascondo la colonna: presente ma non visibile nella DataGrid
if(columnName == "NomeColonnaDaNascondere")
columnStyle.Width = 0;
else columnStyle.Width = 50;
tableStyle.GridColumnStyles.Add(columnStyle);
}
dataGrid.TableStyles.Add(tableStyle);
dataGrid.DataSource = dataSource;
L'effetto di questo codice è che determinate colonne della
DataSource saranno "trasferite" nella DataGrid, ma saranno nascoste
all'utente.
powered by IMHO 1.3