c# - 启用分页时在 asp.ListView 中查找具有值的项目

标签 c# asp.net listview paging selectedvalue

我试图在单独页面上的 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 是我的 ListView 。项目变量是一个 Int64,代表我的项目的 UID。这也是我的 ListViewItems 的值(value)。上面代码的问题是,当启用分页时,项目位于不同的页面上,这将不起作用,因为 listView.Items.Count 仅设置为当前页面上的项目数。

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

--罗马

最佳答案

为了从对象数据源中获取总记录数,您应该按如下方式使用 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;
    }
}

希望对您有所帮助!

关于c# - 启用分页时在 asp.ListView 中查找具有值的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6877943/

相关文章:

c# - 将规范模式序列化到数据库

c# - 无法将类型为 'ASP._Page_Areas_Admin__ViewStart_cshtml' 的对象转换为类型 'System.Web.WebPages.StartPage'

android - ListView 非常慢 - Android

Android QuickContactBadge 带有类似 Android Lollipop 的字母

c# - 如何在 C# 中使用 Word 文档

c# - 多个 Guid 的 Lambda 表达式

c# - 处理具有共同属性但对象类型不同的对象的方法

c# - 如何保持选中的项目? - 列表显示

c# - 如何使用本地系统用户通过 Windows 服务访问共享资源?

c# - 如何构建我的网站的移动(平板电脑)友好版本?