在我的应用程序中,我有一个复选框列表。下面列出的是复选框列表的html,以及在它所在页面的加载时绑定它的vb代码。
<asp:CheckBoxList Runat="server" id="chklistTeams" RepeatColumns="7" RepeatDirection="Horizontal"
CellPadding="4" Font-Size="7pt"></asp:CheckBoxList>
下面是用于绑定复选框列表的VB
myCmd.CommandText = "Select id, title from teams"
Dim DS As SqlDataReader
DS = myCmd.ExecuteReader
chklistTeams.DataValueField = "id"
chklistTeams.DataTextField = "title"
chklistTeams.DataSource = DS
chklistTeams.DataBind()
DS.Close()
当点击保存按钮时,将调用javascript函数。以下是调用的函数的一部分,它应该为我们提供项目的值。
var checkList = document.getElementById('chklistTeams');
var checkBoxList = checkList.getElementsByTagName("input");
var checkBoxSelectedItems = new Array();
for (var i = 0; i < checkBoxList.length; i++) {
if (checkBoxList[i].checked) {
checkBoxSelectedItems.push(checkBoxList[i].value);
alert('checked - checkBoxList[i]: ' + checkBoxList[i].value)
}
}
所有存储到数组中的值(使用警报测试) - 返回值为“on” - 所以我检查了此列表中复选框的html,这是其中一个复选框的结果
<input name="chklistTeams:21" id="chklistTeams_21" type="checkbox" value="on"/>
我确信这些值正在被绑定到列表中 - 因为以旧的方式获取它们的值,您获得了该项的正确整数值 - 下面列出的是用于处理此值的VB代码(并返回一串整数,取决于检查了多少个框 - 没有返回值“on”的列表)。我需要能够通过javascript进行另一次修改,我们现在必须使用PageMethods进行另一次修改,并且不能在后端使用公共共享函数
将在checkboxlist
中获取正确的已检查项目值的VB代码 For Each li In chklistTeams.Items
If li.Selected = True Then
strTeamList = strTeamList & li.Value & ","
bolTeamSelected = True
End If
Next
If bolTeamSelected = True Then
strTeamList = strTeamList.Substring(0, strTeamList.Length - 1)
End If
任何人都可以看到为什么获取值的javascript方式给我“on”而不是像VB方式那样的整数值?再次感谢你的帮助。再次 - 这必须在JS中完成 - 由于函数是公共的和共享的,所以不能使用VB代码。感谢。
答案 0 :(得分:1)
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxlist.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.items.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitem.aspx
checkboxlist.items(index)的类型为listitem,listitem有一个属性属性,可以设置客户端属性
以下是代码示例: ListItem.Attributes.Add not working
在chklistTeams DataBound事件的情况下:
foreach(ListItem li in chklistTeams.Items)
{
li.Attributes.Add("JSvalue", li.Value);
}
在JavaScript中:
checkBoxSelectedItems.push(checkBoxList[i].getAttribute("JSvalue"));
答案 1 :(得分:0)
找到一个解决方案,使得全局共享数组在加载时使用id值填充数组,然后通过javascipt我能够获取已检查项的索引 - 然后可以转到同一索引处的数组获取id值供以后使用。