public int ListBoxLastSelected
{
get
{
if (Session["ListBoxLastSelected"] != null)
return Convert.ToInt32(Session["ListBoxLastSelected"]);
return -1;
}
set { Session["ListBoxLastSelected"] = value; }
}
创建以下方法
private void EnableListboxDeselect()
{
if (!IsPostBack)
{
// Register a postback event whenever you click on the list item
ClientScriptManager cs = Page.ClientScript;
lstMyList.Attributes.Add("onclick", cs.GetPostBackEventReference(lstMyList, "clientClick"));
Session["ListBoxLastSelected"] = null;
}
if (IsPostBack)
{
// Ensure the postback is from js side
if (Request["__EVENTARGUMENT"] != null && Request["__EVENTARGUMENT"] == "clientClick")
{
if (CorpListLastSelected == Convert.ToInt32(lstMyList.SelectedValue))
{
lstMyList.ClearSelection();
CorpListLastSelected = -1;
}
else
{
ListBoxLastSelected= Convert.ToInt32(lstMyList.SelectedValue);
}
}
}
}
2条答案
按热度按时间7dl7o3gd1#
我修正了Andrew指出的问题,设置SelectedIndex = -1;但是,这产生了奇怪的行为,因为现在我会有一个checkboxList正在填充从选定的列表项我选择,并没有想法看到哪个列表项填充它后病房。
所以我所做的就是在andrew建议的基础上再加了2行代码,效果很好。
谢谢你把我推向正确的方向!
wfveoks02#
如果您的
SelectionMode="Single"
需要在第二次单击时取消选择某个项目,可以使用以下解决方法。在你的页面中创建一个属性来保存最后一次使用session选择的列表项的值。我假设你的列表框中选择的值总是int
创建以下方法
在Page_Load上添加以下代码