无法为ASP:Repeater清除项目

本文关键字:Repeater 清除 项目 ASP | 更新日期: 2023-09-27 18:05:21

这是我如何启动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();

(注意在第二段代码中使用了一个新函数来生成一个不同的列表)

问题是Repeater控件似乎仍然包含来自第一个代码部分的项。

第2节中的最后一个动作taskRepeater.DataBind();使ItemDataBound函数触发11次,这表明最初生成的列表项仍以某种方式包含在repeater中。

你知道我哪里做错了吗?

无法为ASP:Repeater清除项目

唯一的问题是OnClick事件正在启动,做你想做的事情,但之后页面OnLoad正在启动并将内容替换为原始内容。要解决这个问题,只需在页面OnLoad:

中进行修改
if (!IsPostBack)
    // Bind the repeater

在调用第2节代码之前,请这样做,

    DataTable dt = new DataTable();
    taskRepeater.DataSource = dt;
    taskRepeater.DataBind();