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 は私のリスト ビューです。プロジェクト変数は、プロジェクトの UID を表す Int64 です。これは、ListViewItems の値でもあります。上記のコードの問題は、ページングが有効になっていて、アイテムが別のページにある場合、listView.Items.Count が現在のページのアイテム数にのみ設定されているため、これが機能しないことです。

私の目標は、アイテムを見つけ、リストビューを設定して正しいページを表示し、最後にアイテムを選択することです。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

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 に答える
0

ListView アイテムをどのようにバインドしますか?

  1. データベース レベルのページング (ストアド プロシージャ、クエリ) を使用している場合は、同じ方法で検索を行う必要があります。検索条件を渡すことで、データベース クエリ/ストアド プロシージャを使用します。
  2. ListView アイテムをビジネス/データ レイヤーによって提供されるアイテムのコレクションにバインドする場合、アイテムを提供するレイヤーに検索メソッドを作成して、このメソッドがアイテムをループできるようにする必要があります。
于 2011-07-29T19:25:22.497 に答える