关于控制嵌套repeater控件中checkbox的选中的个数 本帖最后由 peace12211214 于 2012-08-28 16:39:26 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将你的checkbox 分组 每一题的答案分为一组 js document.getElementsByTagName("当前组name值"); 以下代码仅供参考<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound"> <ItemTemplate> 题目: 第<%# Eval("question") %>题 <ul> <asp:Repeater ID="rptAnswer" runat="server"> <ItemTemplate> <li> <input id="<%# Eval("answergroup") %>" name="<%# Eval("answergroup") %>" type="checkbox" onclick="checkNum('<%# Eval("answergroup") %>')" /> <%# Eval("answer") %></li> </ItemTemplate> </asp:Repeater> </ul> </ItemTemplate> </asp:Repeater> <script language="javascript" type="text/javascript"> function checkNum(chkname) { var chkanswer = document.getElementsByName(chkname); var answernum = chkanswer.length; var falg = 0; for (var i = 0; i < answernum; i++) { if (chkanswer[i].checked) { falg++; if (falg > 2) { chkanswer[i].checked = false; } } } } </script>protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataTable dt = new DataTable(); dt.Columns.Add("question", typeof(string)); for (int i = 0; i < 10; i++) { DataRow dr = dt.NewRow(); dr["question"] = i.ToString(); dt.Rows.Add(dr); } this.Repeater1.DataSource = dt; this.Repeater1.DataBind(); } } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) { string qid = DataBinder.Eval(e.Item.DataItem, "question") as string; Repeater rptAnswer = e.Item.FindControl("rptAnswer") as Repeater; DataTable dtAnswer = new DataTable(); dtAnswer.Columns.Add("answergroup", typeof(string)); dtAnswer.Columns.Add("answer", typeof(string)); for (int i = 0; i < 4; i++) { DataRow dr = dtAnswer.NewRow(); dr["answergroup"] = string.Format("q{0}", qid); dr["answer"] = string.Format("{0}",i); dtAnswer.Rows.Add(dr); } rptAnswer.DataSource = dtAnswer; rptAnswer.DataBind(); } } 用你的方法可以了,但是但用户少选了,就没法判断了。为了确认用户没有少选,我在表单提交的时候,添加一个js函数,判断选中的总个数是否满足要求。由于我的form表单中有asp服务器控件,所以表单也必须是服务器控件,但是表单改为服务器控件之后,onsubmit中的函数就失效了,无法触发。这是什么原因呢?是因为由于服务器表单本身就在服务器上操作,就不存在submit的问题吗?有什么解决办法不?难道我只能在点击button提交时,在后台进行相应的判断吗?求解!!! 在点击提交按钮时调用OnClientClick 调用js方法检测有没有少选 js给隐藏域赋值问题~在线等 求一个数字+字母 13位的正则达式。 符号处理"&等 先弹出提示窗口,再关闭该窗口的问题 asp.net循环问题 关于一个页面数据分别存入两张表的问题 关于xsl中的js脚本问题。 多个用户控件的textbox焦点问题!请大家帮忙!在线等待!!! 不好意思,经理要求投票程序柱状图,饼图可选,小弟是个新手,多多关照,急 有关数据库的设计 jquery获取.net GridView选中行中某列的值。如何实现?求指教 oracle如何创建数据库
js
document.getElementsByTagName("当前组name值");
onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
题目:
第<%# Eval("question") %>题
<ul>
<asp:Repeater ID="rptAnswer" runat="server">
<ItemTemplate>
<li>
<input id="<%# Eval("answergroup") %>" name="<%# Eval("answergroup") %>" type="checkbox" onclick="checkNum('<%# Eval("answergroup") %>')" />
<%# Eval("answer") %></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:Repeater> <script language="javascript" type="text/javascript">
function checkNum(chkname) {
var chkanswer = document.getElementsByName(chkname);
var answernum = chkanswer.length;
var falg = 0;
for (var i = 0; i < answernum; i++) {
if (chkanswer[i].checked) {
falg++;
if (falg > 2) {
chkanswer[i].checked = false;
}
}
}
}
</script>protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("question", typeof(string)); for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["question"] = i.ToString();
dt.Rows.Add(dr);
} this.Repeater1.DataSource = dt;
this.Repeater1.DataBind();
}
} protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
string qid = DataBinder.Eval(e.Item.DataItem, "question") as string;
Repeater rptAnswer = e.Item.FindControl("rptAnswer") as Repeater;
DataTable dtAnswer = new DataTable();
dtAnswer.Columns.Add("answergroup", typeof(string));
dtAnswer.Columns.Add("answer", typeof(string)); for (int i = 0; i < 4; i++)
{
DataRow dr = dtAnswer.NewRow();
dr["answergroup"] = string.Format("q{0}", qid);
dr["answer"] = string.Format("{0}",i);
dtAnswer.Rows.Add(dr);
} rptAnswer.DataSource = dtAnswer;
rptAnswer.DataBind();
}
}