|
Maintenance des Colonnes: Supprimer des Colonnes |
|
S'il vous arrive justement d'avoir une colonne peu désirée dans un tableau, vous pouvez la supprimer. Pour effectuer cette opération, la classe DataColumnCollection fournit la méthode Remove (). Cette méthode est prise en charge dans deux versions. L'une d'entre elles utilise la syntaxe suivante: public void Remove(string name); Cette méthode s'attend au nom d'une colonne comme argument. Si le tableau a cette colonne, la colonne serait supprimée. Voici un exemple: |
using System;
using System.Data;
namespace VideoCollection
{
public static class Program
{
static DataSet dsVideos;
static DataColumn colTitle;
static DataColumn colDirector;
static DataColumn colLength;
static DataColumn colFormat;
static DataColumn colRating;
static DataTable tblVideos;
static void CreateCollection()
{
dsVideos = new DataSet("Videos");
tblVideos = new DataTable("Video");
colTitle = new DataColumn("Title", Type.GetType("System.String"));
tblVideos.Columns.Add(colTitle);
colDirector = new DataColumn("Director",
Type.GetType("System.String"));
tblVideos.Columns.Add(colDirector);
colLength = new DataColumn("Length",
Type.GetType("System.String"));
tblVideos.Columns.Add(colLength);
colFormat = new DataColumn("Format",
Type.GetType("System.Int16"));
tblVideos.Columns.Add(colFormat);
colRating = new DataColumn("Rating",
Type.GetType("System.Byte"));
tblVideos.Columns.Add(colRating);
dsVideos.Tables.Add(tblVideos);
}
static void ShowTables()
{
int i = 1;
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
Console.WriteLine("Video Collection - Tables");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
foreach (DataTable tbl in dsVideos.Tables)
Console.WriteLine("{0}. {1}", i++, tbl.TableName);
Console.WriteLine("----------------------------");
}
static void ShowColumns(string table)
{
int i = 1;
DataTable tbl = dsVideos.Tables[table];
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
Console.WriteLine("Video Collection - {0} Columns", table);
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
foreach (DataColumn col in tbl.Columns)
Console.WriteLine("{0}. {1}", i++, col.ColumnName);
Console.WriteLine("----------------------------");
}
static int Main(string[] args)
{
CreateCollection();
int i = 1;
DataTable tbl = dsVideos.Tables["Video"];
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
Console.WriteLine("Video Collection\nColumns of the Video table");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
foreach (DataColumn col in tbl.Columns)
Console.WriteLine("{0}. {1}", i++, col.ColumnName);
Console.WriteLine("----------------------------");
tbl.Columns.Remove("Length");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
Console.WriteLine("Video Collection\nColumns of the Video table");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
i = 1;
foreach (DataColumn col in tbl.Columns)
Console.WriteLine("{0}. {1}", i++, col.ColumnName);
Console.WriteLine("----------------------------");
return 0;
}
}
}
Ceci produirait: =-=-=-=-=-=-=-=-=-=-=-=-=-=-= Video Collection Columns of the Video table =-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1. Title 2. Director 3. Length 4. Format 5. Rating ---------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-= Video Collection Columns of the Video table =-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1. Title 2. Director 3. Format 4. Rating ---------------------------- Press any key to continue . . . S'il n'y a aucune colonne avec le nom passé comme argument à la méthode DataColumnCollection.Remove (), le compilateur rejetterait une exception ArgumentException. comme ceci peut seulement être indésirable, la classe DataColumnCollection vous permet de vérifier l'existence de la colonne sur le tableau. Ceci est fait en appelant la méthode contains () dont la syntaxe est : public bool Contains(string name); Voici un exemple de l'appeler : using System;
using System.Data;
namespace VideoCollection
{
public static class Program
{
. . . No Change
static int Main(string[] args)
{
CreateCollection();
int i = 1;
DataTable tbl = dsVideos.Tables["Video"];
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
Console.WriteLine("Video Collection\nColumns of the Video table");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
foreach (DataColumn col in tbl.Columns)
Console.WriteLine("{0}. {1}", i++, col.ColumnName);
Console.WriteLine("----------------------------");
if (tbl.Columns.Contains("Length"))
{
tbl.Columns.Remove("Length");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
Console.WriteLine("Video Collection\nColumns of the Video table");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
i = 1;
foreach (DataColumn col in tbl.Columns)
Console.WriteLine("{0}. {1}", i++, col.ColumnName);
Console.WriteLine("----------------------------");
}
return 0;
}
}
}
Même si le tableau contient cette colonne, il peut ne pas permettre à la colonne d'être supprimée. Pour cette raison, vous devriez d'abord vérifier que le tableau permet que la colonne soit supprimée. Pour vous aider à vérifier ceci, la classe DataColumnCollection est équipée de la méthode CanRemove (). Sa syntaxe est: public bool CanRemove(DataColumn column);
Les colonnes d'un tableau sont arrangées dans une liste classée avec la première (colonne la plus gauche) à l'index 0, la seconde (de la gauche) à l'index 1, et ainsi de suite. Pour supprimer une colonne basée sur son index, vous pouvez appeler la méthode DataColumnCollection.RemoveAt (). Sa syntaxe est : public void RemoveAt(int index); L'index de la colonne est passé à cette méthode. En appelant cette méthode, s'assurer que vous passez un index valide qui est un nombre entier supérieur ou égal à 0 mais moins que le DataColumnCollection.Count - 1. Voici un exemple : using System;
using System.Data;
namespace VideoCollection
{
public static class Program
{
. . . No Change
static int Main(string[] args)
{
CreateCollection();
int i = 1;
DataTable tbl = dsVideos.Tables["Video"];
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
Console.WriteLine("Video Collection\nColumns of the Video table");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
foreach (DataColumn col in tbl.Columns)
Console.WriteLine("{0}. {1}", i++, col.ColumnName);
Console.WriteLine("----------------------------");
tbl.Columns.RemoveAt(4);
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
Console.WriteLine("Video Collection\nColumns of the Video table");
Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
i = 1;
foreach (DataColumn col in tbl.Columns)
Console.WriteLine("{0}. {1}", i++, col.ColumnName);
Console.WriteLine("----------------------------");
return 0;
}
}
}
Si vous passez un index négatif d'un nombre >= DataColumnCollection.Count, le compilateur rejetterait une exception IndexOutOfRangeException. Si vous savez le nom de l'objet de la colonne, vous pouvez d'abord obtenir son index en appelant la méthode DataColumnCollection.IndexOf () et ensuite passer sa valeur retournée à la méthode RemoveAt ().
Pour supprimer toutes les colonnes d'un tableau, vous pouvez appeler la méthode DataColumnCollection.Clear (). Sa syntaxe est : public void Clear(); Après que cette méthode soit appelée, toutes les colonnes du tableau sont supprimées. |
|
|
||
| Précédent | Copyright © 2007, Yevol | Suivant |
|
|
||