我目前面临一个问题。如何从asp.net复选框列表中获取最新的选定值?如何从复选框列表中获取最新的选定值?
通过循环复选框列表的项目,我可以获得最高的选定索引及其值,但不希望用户从低到高顺序选择复选框。那么,如何处理呢?
是否有任何事件捕获系统可以帮助我识别生成事件的确切列表项?
我目前面临一个问题。如何从asp.net复选框列表中获取最新的选定值?如何从复选框列表中获取最新的选定值?
通过循环复选框列表的项目,我可以获得最高的选定索引及其值,但不希望用户从低到高顺序选择复选框。那么,如何处理呢?
是否有任何事件捕获系统可以帮助我识别生成事件的确切列表项?
如果我的理解是正确的,这是代码我会使用:
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
int lastSelectedIndex = 0;
string lastSelectedValue = string.Empty;
foreach (ListItem listitem in CheckBoxList1.Items)
{
if (listitem.Selected)
{
int thisIndex = CheckBoxList1.Items.IndexOf(listitem);
if (lastSelectedIndex < thisIndex)
{
lastSelectedIndex = thisIndex;
lastSelectedValue = listitem.Value;
}
}
}
}
是否有任何事件捕捉系统,将帮助我找出产生该事件的确切列表项?
您使用CheckBoxList的事件CheckBoxList1_SelectedIndexChanged。当单击列表的CheckBox时,将调用此事件,然后您可以检查所需的任何条件。
编辑:
下面的代码使您可以获取用户选择的最后一个复选框指数。有了这些数据,用户就可以得到最后选择的值。
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
string value = string.Empty;
string result = Request.Form["__EVENTTARGET"];
string[] checkedBox = result.Split('$'); ;
int index = int.Parse(checkedBox[checkedBox.Length - 1]);
if (CheckBoxList1.Items[index].Selected)
{
value = CheckBoxList1.Items[index].Value;
}
else
{
}
}
不知道你,但作为一个用户,我不希望每次检查复选框项目时都会回发页面。
这是解决方案,我将与(jQuery的)去:
声明表单上的一个服务器端的隐藏字段:
<asp:HiddenField ID="HiddenField1" runat="server" EnableViewState="true" />
再用钢丝了客户端的事件处理程序复选框存储复选框点击:
$('.someclassforyourcheckboxes').click(function() {
$('#HiddenField1').val($(this).attr('id'));
这是一个轻量级的机制,用于存储单击“最新”复选框的ID。而且您不必为复选框设置autopostback = true并执行不必要的回发。
你不必使用jQuery--你可以使用普通的Javascript,但是,为什么还要做更多的工作? =)
然后,当你真的做回发(在提交按钮点击我假设),只需检查隐藏字段的值。当然,除非你想回发每个复选框点击,但我不能想象你想要这个(也许你正在使用UpdatePanel)的场景。
编辑
一个复选框列表的HTML看起来像这样:
<input type="checkbox" name="vehicle" value="Bike" /> I have a bike
所以,你可以访问下面三件事情:
车辆 = $(this).attr('name');
自行车 = $(this).attr('value');
我有一辆自行车 = $(this).html();
如果你试图访问数据绑定值,尝试第二种方法。
试试看。
其实我几天前正在使用Coolite dropdownlist。该控件有一个名为SelectedItems的属性,它是根据选择顺序的selecteditem的数组。我在asp.net复选框列表中查找类似的内容。 – 2010-09-07 01:42:42
另一件事是,我使用多选的checkboxlist和复选框是从数据库中的数据绑定。所以使用JavaScript,我只能跟踪ID,但不知道我可以跟踪为该复选框填充的值。这个值不是复选框中显示的文本,而是与复选框关联的其他一些ID,我可以从我的代码隐藏页面中获得该复选框。你可以请张贴一些示例代码:你可以请张贴一些代码来处理javascript的数据绑定复选框吗? – 2010-09-07 01:50:08
@Masud你需要跟踪什么?复选框项目的值?如果是这样,只需使用$(this).html(),它会给你复选框项的文本(即值) – RPM1984 2010-09-07 01:51:46
下面是为您提供最新选定的CheckBoxList项目的代码。
string result = Request.Form["__EVENTTARGET"];
string [] checkedBox = result.Split('$'); ;
int index = int.Parse(checkedBox[checkedBox.Length - 1]);
if (cbYears.Items[index].Selected)
{
//your logic
}
else
{
//your logic
}
希望这会有所帮助。
最近您的意思是列表中最后一个复选框? – 2010-09-07 00:45:30
使用客户端脚本,比如jQuery或其他来做到这一点... - http://jQuery.com/ – 2010-09-07 00:55:27