无法清除ASP的项目:Repeater

时间:2013-03-22 10:10:16

标签: c# asp.net repeater

这是我启动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次,这表明最初生成的列表项仍以某种方式包含在转发器中。

我对哪里出错了?

2 个答案:

答案 0 :(得分:6)

唯一的问题是OnClick事件正在启动,执行您想要执行的操作,但之后页面OnLoad正在启动并将内容替换为原始内容。要解决这个问题,只需在OnLoad页面上执行此操作:

if (!IsPostBack)
    // Bind the repeater

答案 1 :(得分:1)

在调用第2节代码之前,只需执行此操作,

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