Ceci est une tâche commune et doit être bien publié. Il est important de découpler votre contenu de votre présentation. Cela signifie que vos données doivent être divisées et séparées de manière à pouvoir être affichées par n'importe quel contrôle ou tag afin que vos données ne soient pas étroitement couplées à votre interface Web.
Pour cela, vous voulez convertir vos données en parties accessibles séparément afin que la liaison de données puisse les utiliser de manière illimitée. Vous pouvez effectuer de puissantes conversions de données à l'aide de projections dans LINQ. La méthode dépend du type de données que vous avez déjà.Je vais montrer deux façons.
Si vos données actuelles est juste un ensemble de chaînes, comme ceci:
List<string> myData = new List<string>()
{
"New York | NY",
"Chicago | IL",
"Los Angeles | CA"
};
... alors vous pouvez simplement préfixe chaque chaîne avec le nombre et l'afficher comme il est affiché maintenant.
myData = myData.Select((s, i) => i.ToString() + ". " + s).ToList();
ficelles, cette méthode est facile, mais ne contrôle que vous laissez pas vraiment votre présentation des données, telles que la transformation de « 1 » à "(1)" ou "|" à ",".
Si, au contraire, vous avez une collection de, disons, la ville objets chacun avec un CityName et les propriétés CityAbbreviation ...
class City
{
public string CityName { get; set; }
public string CityAbbreviation { get; set; }
}
... vous pouvez toujours utiliser une projection et reviendriez un objet anonyme avec deux propriétés. Le premier serait le numéro de ligne, et le second serait votre classe City. Cela vous donne la flexibilité de lier les données comme vous le souhaitez avec n'importe quel contrôle.
// Create fake data.
List<City> myData = new List<City>()
{
new City(){ CityName = "New York", CityAbbreviation="NY" },
new City(){ CityName = "Chicago", CityAbbreviation="IL" },
new City(){ CityName = "Los Angeles", CityAbbreviation="CA" }
};
// Project data... We create a new container object
// to hold each city in one property
// and a NUMBER in a second property.
var anonList = myData.Select((x, i) => new
{
Number = (i + 1).ToString(),
City = x
}).ToList();
// Databind (Winforms example)
listBox1.Items.Clear();
anonList.ForEach(
c =>
listBox1.Items.Add(
c.Number + ". " + c.City.CityName + " , " + c.City.CityAbbreviation
)
);
donc à utiliser cette deuxième méthode, il vous suffit d'avoir un ensemble de données qui ont déjà séparé les éléments de vos données (Ville, CityName). Si vous travaillez avec des chaînes, vous pouvez utiliser ce code pour les convertir dans la classe City que j'ai utilisée ci-dessus.
// Create fake data.
List<string> myStringData = new List<string>()
{
"New York | NY",
"Chicago | IL",
"Los Angeles | CA"
};
// Convert strings to City objects
List<City> myData = myStringData.Select(
s => {
List<string> parts = s.Split('|').Select(s2 => s2.Trim()).ToList();
return new City()
{ CityName = parts[0], CityAbbreviation = parts[1] };
}).ToList();