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

How to i display my total count for each user members in a repeater

我有一份 asp.net 会员申请。它是这样工作的:各种组织可以在门户网站上注册,然后他们可以在自己的名下注册成员。例如,当组织A注册时,他接着在他的组织下创建成员。我拥有一切 运行 但我希望自己作为 superAdmin 能够知道每个组织的成员数量。这就是我想做的,在页面加载时,我想将所有组织(来自组织 table)绑定到转发器,然后从成员 table[=14= 中获取每个成员的数量]

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 名称用户名

1 OrgA 我的用户名 2 OrgB 其他用户名

Members Table

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

以上就是我设计 table 的方式。(OrgId 是组织 table 的外键)

<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 传递给 label(labelMembers) ,表示 OrgB 有两个注册成员。我希望我的事情足够清楚

由于您的成员 table 有一个外键引用组织 table,我假设您的 Coop class(我假设它是组织 [= 的 EF class 21=]) 应该有这样的 属性:

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

用于与成员的主从关系 table。 所以你可以使用 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('MembersCount')。