2012-02-13 80 views
3

有人可以對此有所瞭解我的NameValueCollection返回的是Length屬性而不是名稱和值可以讓我看看我在這裏做錯了什麼。我無法爲下拉列表設置DataTextField或DataValueField,它只是給了我一個長度。NameValueCollection返回長度屬性,而不是名稱值

public NameValueCollection GetDisplayForumGroups() 
    { 
     using (CMSEntities db = new CMSEntities()) 
     { 

      var forums = (from x in db.Forums where x.ParentID == null select new { Name = x.Title, Value = x.ForumID }); 
      NameValueCollection collection = new NameValueCollection(); 

      foreach (var forum in forums) 
      { 
       collection.Add(forum.Name, forum.Value.ToString()); 
      } 

      return collection; 
     } 
    } 


    public Dictionary<string, int> GetDisplayForumGroups() 
    { 
     using (CMSEntities db = new CMSEntities()) 
     { 

      Dictionary<string, int> forums = (from x in db.Forums where x.ParentID == null select x).ToDictionary(x => x.Title, x => x.ForumID); 


      return forums; 
     } 
    } 
+0

您向我們展示了錯誤的代碼;設置DropDownList屬性的代碼在哪裏?如果您看到長度而不是名稱/值,則表示您設置了錯誤。 – 2012-02-13 00:26:45

回答

1

您不能直接綁定到NameValueCollection,因爲它不提供合適的枚舉器。標準枚舉器只能通過鍵枚舉。

然後,你不應該首先使用NameValueCollection這個,你應該使用通用的Dictionary,除非你需要每個鍵的多個值(甚至在大多數情況下有更好的選擇)。甚至還有一種用於自動製作詞典的Linq方法:

Dictionary<string, int> forums = (from x 
            in db.Forums 
            where x.ParentID == null 
            select x) 
           .ToDictionary(x => x.Title, x => x.ForumID); 
+0

謝謝你的回答。我正在使用NameValueCollection爲DropDownList跟蹤一些人的示例,但有一個人無法使用它,我陷入了同一陷阱! – ONYX 2012-02-13 00:44:50

+0

你可以在GridView中使用Dictionary對象嗎? – ONYX 2012-02-13 00:46:47

+0

@KDM:我不明白爲什麼不這樣做,似乎是一個奇怪的地方,但使用字典。你會用gridview做什麼? – 2012-02-13 00:49:21

相關問題