2013-03-22 19 views
3

這是我開始我的ASP:直放站:的ASP無法明確項目:直放站

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(); 

(注意在一個新的函數用於產生不同的列表中的第二代碼部分)

的問題是,所述中繼器控制似乎仍然包含來自所述第一c中的項目。頌歌部分。

第2節taskRepeater.DataBind()中的最後一個操作使得ItemDataBound函數觸發了11次,這表明最初生成的列表項仍以某種方式包含在中繼器中。

任何想法,我哪裏出了錯?

+0

最有可能第一個部分代碼被之前(在頁面加載我猜的)叫點擊按鈕的第二部分的代碼。 – yogi 2013-03-22 10:14:47

+1

這是正確的,yogi – user1666361 2013-03-22 10:15:52

回答

6

你唯一的問題是,OnClick事件被解僱了,做你想做的事,但事後頁面的OnLoad被髮射了和用原來的內容替換內容。爲了解決這個問題,只是做頁面的OnLoad:

if (!IsPostBack) 
    // Bind the repeater 
+1

正確,這是我用來解決此問題的操作。 – user1666361 2013-03-22 11:55:15

+0

很高興我能幫到你。 – melancia 2013-03-22 13:48:03

1

之前調用部2的代碼只是這樣做,

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

這沒有解決我的問題。我相信問題是當我點擊一個按鈕時,Page_Load函數會觸發。我試圖通過回發檢查來解決這個問題。 – user1666361 2013-03-22 10:44:42