我试图在单独页面上的 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 属性,但这并不那么简单,因为它是只读的。任何想法都会有很大帮助,提前致谢。
--罗马
为了从对象数据源获取总记录数,您应该使用 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;
}
}
希望有帮助!
如何绑定ListView Items?
您应该将
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;
}
}