在我的应用程序中,我有一个复选框列表。下面列出的是复选框列表的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代码。谢谢。
发布于 2013-01-29 00:28:15
找到了一个解决方案,创建全局共享数组,在加载时用id值填充数组,然后通过javascipt我能够获得选中项的索引-然后可以转到相同索引处的数组以获取id值以供以后使用。
发布于 2013-01-29 09:24:23
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(索引)属于listitem类型,listitem具有可设置客户端属性的attributes属性
下面是代码示例: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"));https://stackoverflow.com/questions/14564932
复制相似问题