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 仅设置为当前页面上的项目数。

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

——罗马

4

3 回答 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;
    }
}

希望能帮助到你!

于 2012-12-04T20:15:11.330 回答
0

你如何绑定 ListView 项?

  1. 如果您正在使用数据库级分页(存储过程、查询) - 您应该以相同的方式进行搜索 - 通过传递搜索条件来使用数据库查询/存储过程。
  2. 如果您将 ListView 项目绑定到业务/数据层提供的项目集合 - 您必须在提供项目的层上创建搜索方法,以便此方法能够遍历项目。
于 2011-07-29T19:25:22.497 回答
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;
    }
 }
于 2011-07-29T19:29:35.707 回答