2011-11-30 41 views

回答

0

如果您使用的是onSelectedIndexChanged,那意味着每當用戶點擊一個選項時,您的列表框會回發。如果您想跟蹤用戶是否多次點擊相同的選項,您可以保留以前點擊的項目列表並將其存儲在ViewState中。

只要你存儲的數據很小,並且可以序列化,那應該沒問題。

因此,爲了保持用戶點擊值的滑動列表中,這樣的事情應該工作

public List<string> previouslyClickedOptions { 
    get { 
     if (ViewState["prevClicked"] == null) 
      ViewState["prevClicked"] = new List<string>(); 
     return (List<string>)ViewState["prevClicked"]; 
    } 
} 

而在你的SelectedIndexChanged:

string currentlySelected = myLB.SelectedValue; 
bool clickedBefore = previouslyClickedOptions.Contains(currentlySelected); 
if (!clickedBefore) 
    previouslyClickedOptions.Add(currentlySelected); 
0

相同的答案亞當,但灑SessionState的。

public List<int> previouslyClickedOptions{ 
    get { 
     if (Session["prevClicked"] == null) 
      Session["prevClicked"] = new List<int>(); 
     return (List<int>)Session["prevClicked"]; 
    } 
} 
0

亞當是正確的關於自動張貼更改是一種選擇。如果這是你已經在做的事情,那麼做這種跟蹤是有意義的。該屬性實際上稱爲AutoPostBack,但是,而不是onSelectedIndexChanged,這是您可以處理的事件,當有一個帖子指示該控件的值與初始投放時不同時。

雖然每次點擊控件時都可能不想回發。這就是瀏覽器和服務器之間來回的大量通信。我建議,如果你想要點擊點擊數,你最好在客戶端使用javascript來完成這個工作,並在腳本中更新表單中的隱藏輸入,當表單被髮布爲合法理由而不是讓它超出必要的方式。

這將節省您的帶寬和負載在您的服務器上,只是感覺像一個更好的方法。

+0

很好每次有人點擊列表框中的兩個不同的項目,它將它們從列表框中移除並將它們顯示在單獨的列表框中,將它們「配對」在一起可以這麼說。我不會使用回傳嗎? –

+1

我也會使用腳本。在客戶端添加和從列表控件中移除並不複雜。 –

0

我寧願用javascript或jquery來做這個檢查。畢竟這只是一個警告。

相關問題