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.
目标: 获取要显示的 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.