2013-07-04 32 views
0

我想使工作嵌套ListView几天,但我不明白为什么它只显示第一个选定的数据。下面是一些代码: ASPX:嵌套ListView只显示第一个选定的数据

<asp:ListView ID="ListForumCategories" runat="server"> 
     <ItemTemplate> 
      <div class="accordionButton"> 
       <table><%--class="Categories"--%> 
        <tr> 
         <td class="CatName"> 
          <%# Eval("CatName") %> 
         </td> 
         <td class="SubjectNumber"> 
          0 
         </td> 
         <td class="AllComment"> 
          0 
         </td> 
         <td class="CreationDate"> 
          <%# Eval("WhenCreated") %> 
         </td> 
         <td class="LastModification"> 
          <%# Eval("WhenCreated") %> 
         </td> 
        </tr> 
       </table> 
       </div> 
      <asp:ListView ID="ListSubjectsToCategories" DataSource='<%# Eval("RelatedSubjects") %>' runat="server"> 
       <ItemTemplate> 
        <div class="accordionContent"><%# Eval("SubjID") %> <%# Eval("SubjectName") %> <%# Eval("WhenCreated") %></div> 
       </ItemTemplate> 
      </asp:ListView> 
     </ItemTemplate> 
    </asp:ListView> 

查询

public static List<ForumCategoriesModel> ListForumCategories() 
     { 
      try 
      { 
       return BW_Model.ForumCategories.Select(x => new ForumCategoriesModel 
       { 
        CatID = x.CatID, 
        CatName = x.CatName, 
        WhenCreated = x.WhenCreated 
       }).ToList(); 
      } 
      catch 
      { 
       throw new Exceptions.SomethingWrongException(); 
      } 
     } 
public static List<ForumSubjectsModel> ListForumSubjectByCategoryID(int catid) 
     { 
      try 
      { 
       return BW_Model.ForumSubjects.Select(x => new ForumSubjectsModel 
       { 
        SubjID = x.SubjID, 
        WhoCreated = x.WhoCreated, 
        WhichCategory = x.WhichCategory, 
        SubjectName = x.SubjectName, 
        SubjectText = x.SubjectText, 
        WhenCreated = x.WhenCreated 
       }).Where(x => x.WhichCategory == catid).ToList(); 
      } 
      catch 
      { 
       throw new Exceptions.SomethingWrongException(); 
      } 
     } 

public class ForumCategoriesModel 
    { 
     public Int32 CatID { get; set; } 
     public String CatName { get; set; } 
     public DateTime WhenCreated { get; set; } 
     public List<ForumSubjectsModel> RelatedSubjects { get { return bw_forum_sqlchannel.ListForumSubjectByCategoryID(CatID); } } 
    } 
public class ForumSubjectsModel 
    { 
     public Int32 SubjID { get; set; } 
     public Int32 WhoCreated { get; set; } 
     public Int32 WhichCategory { get; set; } 
     public String SubjectName { get; set; } 
     public String SubjectText { get; set; } 
     public DateTime WhenCreated { get; set; } 
    } 

我应该得到一个列表<>回来,有很多元素,但它只显示每个类别的第一个。

现在试图解决这个问题2天...如果你能帮我解决问题,那将会非常有用。提前致谢。

啊,忘了后面的代码:):

categories = bw_forum_sqlchannel.ListForumCategories(); 
ListForumCategories.DataSource = categories; 
ListForumCategories.DataBind(); 

解决方案:

<asp:ListView ID="ListSubjectsToCategories" DataSource='<%# Eval("RelatedSubjects") %>' runat="server"> 
        <ItemTemplate> 
         <div class="accordionContent"><%# Eval("SubjID") %> <%# Eval("SubjectName") %> <%# Eval("WhenCreated") %></div> 
        </ItemTemplate> 
       </asp:ListView> 

变成了:

<div class="accordionContent"> 
<asp:ListView ID="ListSubjectsToCategories" DataSource='<%# Eval("RelatedSubjects") %>' runat="server"> 
        <ItemTemplate> 
         <%# Eval("SubjID") %> <%# Eval("SubjectName") %> <%# Eval("WhenCreated") %> 
        </ItemTemplate> 
       </asp:ListView> 
</div> 
+0

'RelatedSubjects'属性是否包含预期的数据,问题是它的所有内容都没有显示在内部'ListView'中?还是这样,'RelatedSubjects'甚至不会获取它应该的所有行? – user1429080

+0

@ user1429080我不知道,我无法测试它。 列表视图的输出是这样的: [代码]第一类别 第一个项目属于第一类别 第二类别 第一个项目属于第二类[/代码] 但应该有属于这些类别的更多的项目,但它只显示第一个。我认为可能相关的主题有所有的数据,但我不知道它 – davegen

+0

@ user1429080哇,我发现它在页面源...怎么会这样CSS? :D让我试着修复它。 – davegen

回答

0

的原因可能是:

  1. ListForumSubjectByCategoryID只返回一个记录
  2. 奇怪的事情是怎么回事内ListView
  3. 一切正常,除了浏览器因为某些原因没有显示会根据您所提供的代码中的所有数据

(这看起来很理智,并且对我自己的测试表明它应该有效),但问题可能是第三种选择。

你可以通过查看渲染页面的源代码来查看它的内容吗?如果是这样,你需要调查你的CSS来找出为什么浏览器只显示第一行。

+0

3.选项是:)谢谢你的帮助! – davegen