启用分页时在 asp.ListView 中查找具有 Value 的项目

问题描述 投票:0回答:3

我试图在单独页面上的 aspx ListView 中查找选定的项目,然后切换页面并选择该项目。我有我正在寻找的 ListViewItem 的 value 属性,但似乎无法让它工作。这是我尝试过的:

for (int i = 0; i < lvProject.Items.Count; i++)
{
    if (((Label)lvProject.Items[i].FindControl("Project_IDLabel")).Text == project.ToString())
    {
        lvProject.SelectItem(i);
        break;
    }
}

所以 lvProject 是我的列表视图。项目变量是一个 Int64,代表我的项目的 UID。这也是我的 ListViewItems 的值。上面代码的问题是,当启用分页并且项目位于不同页面上时,这将不起作用,因为 listView.Items.Count 仅设置为当前页面上的项目数。

我的目标是找到该项目,设置列表视图显示正确的页面,最后选择该项目。您可能会认为我可以只设置 SelectedValue 属性,但这并不那么简单,因为它是只读的。任何想法都会有很大帮助,提前致谢。

--罗马

c# asp.net listview pagination selectedvalue
3个回答
2
投票

为了从对象数据源获取总记录数,您应该使用 Selected 事件,如下所示:

protected void ObjectDataSource1_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
    // Get total count from the ObjectDataSource
    DataTable dt = e.ReturnValue as DataTable;
    if (dt != null) recordCount = dt.Rows.Count; // recordCount being declared outside the method
}

然后您就可以按如下方式搜索该项目:

for (int i = 0; i < recordCount; i++)
{
    Label lblItem = (Label)lvProject.Items[i].FindControl("IdLabel");
    if (lblItem.Text.Equals(itemToSearch))
    {
        lvProject.SelectedIndex = i;
        break;
    }
}

希望有帮助!


0
投票

如何绑定ListView Items?

  1. 如果您正在使用数据库级分页(存储过程、查询) - 您应该以相同的方式进行搜索 - 通过传递搜索条件来使用数据库查询/存储过程。
  2. 如果您将 ListView 项目绑定到业务/数据层提供的项目集合 - 您必须在提供项目的层上创建搜索方法,以便该方法能够循环访问项目。

0
投票

您应该将

SelectedIndex
属性设置为
i

for (int i = 0; i < lvProject.Items.Count; i++)
{
    if (((Label)lvProject.Items[i].FindControl("Project_IDLabel")).Text == project.ToString())
    {
        lvProject.SelectedIndex = i;
        break;
    }
 }
© www.soinside.com 2019 - 2024. All rights reserved.