Vous ne pouvez pas changer la propriété DataType de la colonne si elle est une colonne limitée à une source de données. Au lieu de cela, vous pouvez créer une nouvelle colonne dans la source de données avec un initialiseur d'expression qui vous permet de convertir la colonne String dans une longue colonne. Ensuite, dans la grille, vous pouvez masquer la colonne de chaîne et laisser votre utilisateur voir uniquement la colonne créée avec une expression.
Supposons que vous ayez un DataTable chargé de cette manière
DataTable dt = new DataTable();
sqlAdapter.Fill(dt);
Maintenant, vous pouvez ajouter une nouvelle colonne de type long en utilisant une expression qui copie le contenu de la colonne de chaîne (je suppose que chaque ligne unique est convertible à longue)
dt.Columns.Add("NewLongCol", typeof(long), "StringCol");
yourGrid.DataSource = dt;
Enfin, dans le gestionnaire d'événements de la grille InitializeLayout cacher la colonne de chaîne et placer la colonne longue à sa place
private void yourGrid_InitializeLayout(object sender, InitializeLayoutEventArgs e)
{
UltraGridBand b = e.Layout.Bands[0];
int pos = b.Columns["StringCol"].Header.VisiblePosition;
b.Columns["StringCol"].Hidden = true;
b.Columns["NewLongCol"].Header.VisiblePosition = pos;
}
C'est étrange. Pouvez-vous montrer comment et quand vous changez le type de données de la colonne? Et dites-nous quelle version d'Infragistics Ultragrid utilisez-vous? – Steve
@Steve J'ai mis à jour mon message. – Cieja
Mais cette colonne est-elle une colonne liée? – Steve