3

これは、ASP:Repeater を開始する方法です。

var taskItemsList = new List<Task>(); 

taskItemsList = GenerateActiveList(); //generates 6 items
_taskItemsListSorted = from Task in taskItemsList
                       orderby Task.AssignedTo ascending , Task.DueDateTicks ascending
                       select Task;
taskRepeater.DataSource = _taskItemsListSorted;
taskRepeater.DataBind();

これは、同じリピーターに別のリストを表示させる方法です (このコードは、ユーザーがボタンをクリックすると実行されます)。

taskRepeater.DataSource = null; taskRepeater.DataBind();

var taskItemsList = new List<Task>(); 

taskItemsList = GenerateInactiveList(); //generates 5 items
_taskItemsListSorted = from Task in taskItemsList
                       orderby Task.AssignedTo ascending , Task.DueDateTicks ascending
                       select Task;
taskRepeater.DataSource = _taskItemsListSorted;
taskRepeater.DataBind();

(2 番目のコード セクションでは、別のリストを生成するために新しい関数が使用されていることに注意してください。)

問題は、Repeater コントロールに最初のコード セクションの項目がまだ含まれているように見えることです。

セクション 2 の最後のアクション taskRepeater.DataBind(); では、ItemDataBound 関数が 11 回起動されます。これは、最初に生成されたリスト アイテムがまだリピーターに含まれていることを示しています。

私が間違っている場所のアイデアはありますか?

4

2 に答える 2

6

あなたが持っている唯一の問題は、OnClick イベントが発生し、やりたいことを実行していることですが、その後、ページ OnLoad が起動し、コンテンツを元のものに置き換えています。これを修正するには、ページ OnLoad で次のようにします。

if (!IsPostBack)
    // Bind the repeater
于 2013-03-22T11:26:06.463 に答える
1

セクション 2 のコードを呼び出す前に、これを行うだけです。

    DataTable dt = new DataTable();
    taskRepeater.DataSource = dt;
    taskRepeater.DataBind();
于 2013-03-22T10:28:23.880 に答える