是否可以检查在asp列表框中是否多次单击了一个项目?我正在使用onSelectedIndexChanged事件...但我需要查看是否多次单击了SAME项。那是否有某种事件?
答案 0 :(得分: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);
答案 1 :(得分:0)
与亚当相同的答案,但撒上了SessionState。
public List<int> previouslyClickedOptions{
get {
if (Session["prevClicked"] == null)
Session["prevClicked"] = new List<int>();
return (List<int>)Session["prevClicked"];
}
}
答案 2 :(得分:0)
adam关于自动回发更改是正确的选择。如果这是你已经在做的事情,那么进行那种跟踪是有意义的。该属性实际上称为AutoPostBack,而不是onSelectedIndexChanged,这是一个事件,当有一个帖子指示控件的值与最初提供时的值不同时,你可以处理。
但是,您可能不希望每次点击控件时都回发。这是浏览器和服务器之间来回传递的很多东西。我建议如果你想计算点击次数,你最好在客户端使用javascript,并在该脚本中更新表单中隐藏的输入,其中包含在表单发布为合法时发布的计数理由而不是让它超出必要的路线。这样可以节省服务器的带宽和负载,感觉就像是一种更好的方法。
答案 3 :(得分:0)
我更喜欢使用javascript或jquery进行此检查。毕竟这只是一个警告。