如何在转发器中显示每个用户成员的总计数

时间:2017-10-26 14:00:24

标签: asp.net repeater

我有一个asp.net会员资格申请。这是它的工作原理:各种组织可以在门户网站上注册,然后可以在自己的网站上注册成员。例如,当组织A注册时,他继续在其组织下创建成员。我有一切都在运行但我希望自己作为superAdmin能够知道每个组织的成员数量。这就是我想要的方式,在页面加载时,我想将所有组织(从组织表)绑定到转发器,然后从成员表中获取每个成员的数量

private bool BindConfirmedUsers()
        {
            var approved = cooperative.Coops.Where(m => m.UserStatus == "Approved").OrderByDescending(m => m.CoopId).ToList();

            try
            {
                if (!approved.Any())
                {
                    RepeaterAccepted.DataSource = new List<Coop>();
                    RepeaterAccepted.DataBind();
                    return false;
                }

                RepeaterAccepted.DataSource = approved;
                RepeaterAccepted.DataBind();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

以上代码将为我提供所有组织,但我需要获得属于组织的每个成员的计数。让我做一个我的数据库结构的演示

   table Organization

ID NAME USERNAME

1 OrgA myusername   2 OrgB otherUsername

Members Table

ID ORGId用户名  1 2用户  2 2 user2  3 1 user3

以上就是我如何设计表格。(OrgId是组织表中的外键)

<table id="example2" class="table table-bordered table-hover">
                  <thead>
                  <tr>
                    <th>Coop ID</th>
                    <th>Organization Name</th>
                      <th>Address</th>
                      <th>Phone Number</th>
                    <th>Registered Members</th>
                  </tr>
                  </thead>
                    <asp:Repeater ID="RepeaterAccepted" runat="server" OnItemDataBound="RepeaterAccepted_ItemDataBound">
                     <HeaderTemplate></HeaderTemplate>
                        <ItemTemplate>
                  <tbody>
                      <div class="col-lg-12 col-md-12 col-xs-4">
                  <tr>
                    <td><span><%# Eval("Coopcode") %></span></td>
                    <td><span><%#Eval("CoopName") %></span></td>
                    <td><span><%#Eval("CompanyAddress") %></span></td>
                      <td><span><%#Eval("PhoneNumber") %></span></td>
                      <td><span><asp:Label ID="labelMembers" runat="server"></asp:Label></span></td>

                  </tr>
                        </div>
                  </tbody>
                            </ItemTemplate>
                        </asp:Repeater>
                </table>

剩下的就是将2传递给标签(labelMembers),表明OrgB有两个注册成员。我希望我的事情足够清楚

1 个答案:

答案 0 :(得分:0)

由于您的Members表有一个引用Organization表的外键,我假设你的Coop类(我假设它是Organization表的EF类)应该有这样的属性:

public IQueryable<Member> Members { get; set; }

用于与Members表的master-detail关系。 因此,您可以使用Linq来计算每个组织的成员数量

var approved = cooperative.Coops.Where(m => m.UserStatus == "Approved").OrderByDescending(m => m.CoopId).Select(m =>
                new
                {
                    m.Coopcode,
                    m.CoopName,
                    CoopAddress = m.CompanyAddress,
                    m.PhoneNumber,
                    MembersCount = m.Members.Count()
                });

在您的网页上使用Eval(&#39; MembersCount&#39;)。