当前位置:  开发笔记 > 编程语言 > 正文

将NameValueCollection绑定到GridView?

如何解决《将NameValueCollection绑定到GridView?》经验,为你挑选了2个好方法。

我应该使用什么样的集合将NameValue集合转换为可绑定到GridView?直接做它不起作用.

aspx.cs中的代码

  private void BindList(NameValueCollection nvpList)
  {
     resultGV.DataSource = list;
     resultGV.DataBind();
  }

aspx中的代码


    
         
         
    

任何提示最受欢迎.谢谢.X.



1> tvanfosson..:

你可以使用Dictionary 而不是NameValueCollection.由于Dictionary 实现了IEnumerable,你可以使用LINQ:

resultGV.DataSource = from item in nvpDictionary
                      select new { Key = item.Key, Value = item.Value };
resultGV.DataBind();

[编辑]其实你可以直接使用Dictionary作为:

resultGV.DataSource = nvpDictionary;
resultGV.DataBind();

如果它没有按您希望的方式映射键/值,您可以随时返回LINQ.LINQ还允许您将字段重命名为您想要的任何字段.

[编辑]如果您无法更改为使用Dictionary ,请在方法中将NameValueCollection的副本复制为字典并绑定到它.

private void BindList(NameValueCollection nvpList)
{
   Dictionary temp = new Dictionary();
   foreach (string key in nvpList)
   {
      temp.Add(key,nvpList[key]);
   }

   resultGV.DataSource = temp;
   resultGV.DataBind();
}

如果你经常这么做,你可以编写一个扩展方法来转换为Dictionary,并使用它.

public static class NameValueCollectionExtensions
{
   public static Dictionary ToDictionary( this NameValueCollection collection )
   {
      Dictionary temp = new Dictionary();
      foreach (string key in collection)
      {
          temp.Add(key,collection[key]);
      }
      return temp;
   }
}

private void BindList(NameValueCollection nvpList)
{
   resultGV.DataSource = nvpList.ToDictionary();
   resultGV.DataBind();
}



2> Mark Bracket..:

这有点棘手,因为枚举器只返回Keys.但是,您可以使用Container.DataItem获取Key值,然后查找NameValueCollection以获取值:


   
      
         <%# Container.DataItem %>
      
      
         
            <%# ((NameValueCollection)gv.DataSource)[(string)Container.DataItem] %>
         
      
   

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有