ListView 根本不显示

ListView not displaying at all

目标: 获取要显示的 ListView。我只是想显示 IsApproved 列值为 1 (true)

的数据行

问题: ListView 没有显示(不是数据,甚至是 headers 本身)

我试过的方法:我试过调试并使用 WriteLine 语句来查看它在哪里被捕获。用户正在获取一个值(SELECT 查询),因此它不为空。

剩下的问题:如果它正在获取一个值,为什么整个东西都没有显示?我认为至少 headers 会显示(那些不是来自数据库)。我的数据绑定有问题吗?我也尝试添加 lstUsers.DataBind();根据 Listview not shown in asp.net

这是 WriteLine 中的内容 Output/debug:

SELECT 
[Extent1].[ID] AS [ID], 
[Extent1].[UserName] AS [UserName], 
[Extent1].[FirstName] AS [FirstName], 
[Extent1].[LastName] AS [LastName], 
[Extent1].[EmailAddress] AS [EmailAddress],     
[Extent1].[IsApproved] AS [IsApproved]
FROM [dbo].[SomeUserRegistration] AS [Extent1]
WHERE [Extent1].[IsApproved] = 1

当我在 Visual Studio 中展开上面的内容时,它说:Empty = "Enumeration yielded no results" 但是当我从 GetDataFromQuery() 执行此操作时,我可以看到来自数据库 [0] [1] 的 3 个结果] 和 [2] 都有值


c#代码:

public IQueryable<SomeUserRegistration> lstUsers_GetData()
        {       
            IQueryable<SomeUserRegistration> users = null;
            users = GetDataFromQuery();

            if (users != null)
            {
                System.Diagnostics.Debug.WriteLine(users);
                return users;
            }
            else { return null; }

public IQueryable<SomeUserRegistration> GetDataFromQuery()
        {
            return db.SuperUserRegistrations.Where(m => m.IsApproved);
        }

aspx代码:

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

    <h1>Manage Requests</h1>

    <asp:ListView ID="lstUsers" runat="server" ItemType="Program.PData.SomeUserRegistration" DataKeyNames="ID" SelectMethod="lstUsers_GetData"
        OnItemCommand="lstUsers_ItemCommand" DeleteMethod="lstUsers_DeleteItem" OnSorting="lstUsers_Sorting"
        OnItemDataBound="lstUsers_ItemDataBound"
        ItemPlaceholderID="litPlaceHolder">
        <LayoutTemplate>
            <div class="table-responsive">
                <table class="table">
                    <thead>
                        <tr>
                            <th>Last Name</th>
                            <th>First Name</th>
                            <th>UserName</th>
                            <th>EmailAddress</th>                          
                        </tr>
                    </thead>
                    <asp:Literal ID="litPlaceHolder" runat="server" />
                </table>
            </div>
        </LayoutTemplate>

        <ItemTemplate>
            <tr>

                <td><%# Item.LastName %></td>
                <td><%# Item.FirstName %></td>
                <td><%# Item.UserName %></td>
                <td><%# Item.EmailAddress %></td>              
            </tr>
        </ItemTemplate>
    </asp:ListView>
    <%--  </asp:Panel>--%>
</asp:Content>

它显然指向同名的 table,同名的数据库,在名称稍有不同的服务器上。这与代码正在查看的数据库上的 IsApproved 为 0 的事实相结合(与我认为它正在查看的数据库相反)。

经验教训:仔细查看调试器的详细信息。如果 LINQ 查询没有任何结果,那么它甚至不会显示 headers.