2015-08-23 17 views
0

请找出错误帮助,或者提出另一种方式来做到以下几点:上市AspNetUsers和AspNetRoles

我试图表现出的AspNetUsers列表为ListView,然后通过显示其AspNetRoles名单嵌套0​​:

<asp:ListView runat="server" ItemType= "CEODAL.AspNetUser" SelectMethod="GetAspNetUsers" > 
<LayoutTemplate> 
    <h4>Registered Users</h4> 
    <table class="table"> 
     <tbody> 
      <tr runat="server" id="itemPlaceholder"></tr> 
     </tbody> 
    </table> 
</LayoutTemplate> 
<ItemTemplate> 
    <tr> 
     <td><%#: Item.UserName %></td> 
     <td> 
      <asp:ListView ID="Repeater1" runat="server" ItemType="CEODAL.AspNetRole" SelectMethod="<%#: Item.AspNetRoles.ToList() %>"> 
       <LayoutTemplate> 
        <h4>Registered Users</h4> 
        <table class="table"> 
         <tbody> 
          <tr runat="server" id="itemPlaceholder2"></tr> 
         </tbody> 
        </table> 
       </LayoutTemplate> 
       <ItemTemplate> 
        <tr> 
         <td> 
          <%#: Item.Name %> 
         </td> 
        </tr> 
       </ItemTemplate> 
      </asp:ListView> 
     </td> 
    </tr> 
</ItemTemplate> 

ListViewSelectMethod将直接返回AspNetUsers名单:

return _db.AspNetUsers.ToList(); 

没有孩子ListView,一切工作正常,在那里我会得到用户名列表。

有一次,我把第二ListView我会收到以下错误:

A public method with the name 'System.Collections.ObjectModel.ObservableCollection`1[CEODAL.AspNetRole]' was either not found or there were multiple methods with the same name on the type 'ASP.pages_manageusers_aspx'.

回答

0

尝试用

DataSource="<%# Item.AspNetRoles.ToList() %>"> 

你得到更换属性

SelectMethod="<%#: Item.AspNetRoles.ToList() %>"> 

在你内心的ListView由于SelectMethod属性具有字符串值(要调用的codebehind方法的名称),并且您将它传递给角色对象的ObservableCollection。很明显,你的代码隐藏类没有方法,其名称是集合转换为字符串的结果,因此你的错误

+0

好的。我得到的错误:'数据源'属性不能设置声明。 – omarmallat

+0

奇怪的是,我没有得到那个错误。如果我将该属性写为“DataSource =”Item.AspNetRoles.ToList()“',即没有数据绑定标签”<%# ... %>“,则会出现该错误。 –