Pouvez-vous utiliser le dictionnaire < chaîne, chaîne > au lieu de NameValueCollection. Depuis Dictionnaire < T, T > implémente IEnumerable vous pouvez utiliser LINQ comme ceci:
resultGV.DataSource = from item in nvpDictionary
select new { Key = item.Key, Value = item.Value };
resultGV.DataBind();
[EDIT] En fait, vous pourrez peut-être utiliser le dictionnaire directement:
resultGV.DataSource = nvpDictionary;
resultGV.DataBind();
Si elle ne correspond pas clé/valeur comme vous le souhaitez, vous pouvez toujours revenir à LINQ. LINQ vous permettrait également de renommer les champs pour ce que vous voulez. [EDIT] Si vous ne pouvez pas modifier l'utilisation du dictionnaire < T, T >, faites une copie de NameValueCollection en tant que dictionnaire dans la méthode et liez-la. Si vous faites cela souvent, vous pouvez écrire une méthode d'extension pour convertir en dictionnaire, et l'utiliser ainsi.
public static class NameValueCollectionExtensions
{
public static Dictionary<string,string> ToDictionary(this NameValueCollection collection)
{
Dictionary<string,string> temp = new Dictionary<string,string>();
foreach (string key in collection)
{
temp.Add(key,collection[key]);
}
return temp;
}
}
private void BindList(NameValueCollection nvpList)
{
resultGV.DataSource = nvpList.ToDictionary();
resultGV.DataBind();
}
Je ne peux pas le changer en dictionnaire car c'est un objet ext et j'utilise toujours Net 2.0. Mais merci quand même. Chaque opinion aide. –
Gardez à l'esprit que NameValueCollection peut avoir des clés en double, alors que Dictionary ne le fait pas. Ainsi, vous pourriez rencontrer des problèmes/perdre des informations lors de la conversion en dictionnaire. – magnattic