c# - 当数据集缩小但仍有记录时,Listview 返回 EmptyDataTemplate
问题描述
我能够成功绑定没有返回 100 条记录的查询条件的 ListView。ListView 有一个页面大小为 10 的 DataPager。如果我更改查询条件以将记录数减少到 55 条,则会发生以下两种情况之一:
- 如果我在初始 ListView 的第 1 页到第 6 页,则新的 ListView 会正确填充。
- 如果我在第 7 页或更高版本上,即使存在记录,ListView 也会返回 EmptyDataTemplate(我可以在 VS 的 DataSet 中看到这一点)。
关于#2,所需的行为是让它转到第 1 页。
。CS
protected void bindfindListView()
{
SqlConnection conn = new SqlConnection(connectionString);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
string criteria = "";
if (ddl.SelectedValue == "1" && !String.IsNullOrEmpty(txt.Text))
{
criteria = " AND CONTAINS(transactions.[blah], '\"*" + txt.Text + "*\"')";
}
SqlCommand cmdaccount = new SqlCommand("SELECT DISTINCT id, name, blah FROM nah.dbo.items WHERE email=@userstr" + criteria + " GROUP BY id, name, blah", conn);
cmdaccount.Parameters.AddWithValue("@userstr", Session["user"].ToString());
SqlDataAdapter mySqlAdapter = new SqlDataAdapter(cmdaccount);
DataSet myDataSet = new DataSet();
mySqlAdapter.Fill(myDataSet);
findlv.DataSource = myDataSet;
findlv.DataBind();
Session["findds"] = myDataSet;
conn.Close();
}
protected void findlv_DataBound(object sender, EventArgs e)
{
if (findlv.Items.Count > 0)
{
DataPager pager = (DataPager)findlv.FindControl("findpager");
if (pager != null)
{
pager.Visible = (pager.PageSize < pager.TotalRowCount);
}
}
}
protected void findlv_PagePropertiesChanged(object sender, EventArgs e)
{
bindfindListView();
}
.aspx
<asp:ListView ID="findlv" runat="server" OnDataBound="findlv_DataBound" OnPagePropertiesChanged="findlv_PagePropertiesChanged" Visible="true">
<LayoutTemplate>
<table class="results" id="tblresults">
<tr>
<th class="tdpadleft col170">Property Address</th>
<th class="col170">Property Name</th>
<th class="col170">Seller/Landlord</th>
<th class="col170">Buyer/Tenant</th>
<th class="col78">Status</th>
<th class="col100">Last Update</th>
<th class="col50">Delete</th>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
<div class="pager2">
<asp:DataPager ID="findpager" runat="server" PageSize="10" PagedControlID="findlv">
<Fields>
<asp:NextPreviousPagerField ShowNextPageButton="False" ButtonCssClass="previousNextLink" />
<asp:NumericPagerField ButtonCount="10" ButtonType="Link" NumericButtonCssClass="numericLink" />
<asp:NextPreviousPagerField ShowPreviousPageButton="False" ButtonCssClass="previousNextLink" />
<asp:TemplatePagerField>
<PagerTemplate>
<div class="pagertotal">
Showing
<asp:Label runat="server" ID="CurrentPageLabel" Text='<%# Container.StartRowIndex + 1 %>' />
to
<asp:Label runat="server" ID="TotalPagesLabel" Text='<%#(Container.StartRowIndex+Container.PageSize) > Container.TotalRowCount ? ((Container.StartRowIndex+Container.PageSize)-((Container.StartRowIndex+Container.PageSize)-Container.TotalRowCount)) : (Container.StartRowIndex+Container.PageSize) %>' />
(of
<asp:Label runat="server" ID="TotalItemsLabel" Text='<%# Container.TotalRowCount%>' />
records)
</div>
</PagerTemplate>
</asp:TemplatePagerField>
</Fields>
</asp:DataPager>
</div>
</LayoutTemplate>
<ItemTemplate>
<tr class="altRow rowcolor">
<td>
<asp:Label runat="server" ID="lblid" Text='<%#((DataRowView)Container.DataItem)["id"] %>' />
</td>
<td>
<asp:Label runat="server" ID="lblname" Text='<%#((DataRowView)Container.DataItem)["name"] %>' />
</td>
<td>
<asp:Label runat="server" ID="lblblah" Text='<%#((DataRowView)Container.DataItem)["blah"] %>' />
</td>
</tr>
</ItemTemplate>
<EmptyDataTemplate>
<table id="empty">
<tr>
<td id="tdempty">No Transactions Found
</td>
</tr>
</table>
</EmptyDataTemplate>
</asp:ListView>
解决方案
推荐阅读
- macos - 通过 tapGesture 处理程序保留的幽灵视图
- gcc - 已解决:GCC 比较 String IF else(一种验证您是否写过某个单词的方法)
- docker - 节点重启后 Docker 本地存储库不工作
- quire-api - 您可以通过 Quire API 创建一个新项目吗?
- python - Python,如何检查文件是否存在于 Windows 10 上?
- maven - 由于打包 Maven 项目的规范文件中的“BuildRequires:maven-local”而出错
- ios - 当其中的标签文本被修改时,有没有办法改变 tableView 单元格的高度?
- java - 从命名空间读取 XML 时编组链接异常
- javascript - 如果密码正确vuetify如何转到另一个页面
- docker - 使用带有自定义配置和样式文件的 Kubernetes for TileServer-GL