2012-02-02 76 views
0

我的复选框列表包含3个项目A,B,C。 如果用户检查某一这正是我想那么用户将获得2马克 其他用户获得0马克检测checkboxlist检查多个项目

我的问题是,每当用户检查超过3项,用户仍然能够得到2-痕迹,而由权利用户应该获得零分,因为用户检查了A,B,C?

因此如何使,如果用户已经在CheckBoxList的检查超过1个框,然后用户将获得0马克

例如

if(A==A){ 
    //user obtain 2 marks 
}else{ 
    //user obtain 0 marks 
} 

dtr = cmd.ExecuteReader(); 

if (dtr.Read()) 
{ 
    if (dtr["Answer"].ToString() == CheckBoxList1.Text.ToString()) 
    { 
     Label2.Text = "2 marks"; 
    } 
    else 
    { 
     Label2.Text = "0 marks"; 
    } 
} 
else 
{ 
    Response.Write("db not read"); 
} 

dtr.Close(); 

回答

0

好,我想出了答案,感谢您的帮助=)每次检查numSelected将增加1,一旦numSelected超过2,用户将得到0马克

int numSelected = 0; 

foreach (ListItem li in CheckBoxList1.Items) 
{ 
    if (li.Selected) 
    { 
     numSelected = numSelected + 1; 
    } 
} 

Response.Write("Total Number Of CheckBoxes Selected:"); 

Response.Write(numSelected); 
0

你需要检查的其他框被取消检查,以及如果你只想要他们得到的标记只有检查的

所以像

if(A==A && B!=B && C!=C){ 
    //get marks 
} else { 
    //no marks 
} 
+0

ABC只是一个例子,如果我的checkboxlist项目如何超过10? = x – 2012-02-02 03:07:57

1

如果你只想要一个选择获得标记,那么你应该考虑使用单选按钮而不是复选框。那么只需要检查

if (A == A) { //get marks } 

你可以做的另一件事是标签功能与价值它的价值每个复选框

那么当你检查,你会基于奖标志的所有复选框结果检查标签?

Checkbox b = new Checkbox(); 
b.Tag = markValue; 
+0

aiks,所以旁边的复选框没有办法让checkboxlist得到我想要的东西? – 2012-02-02 03:14:10

+0

因为我打算用网格视图加载checkboxlist给用户做网上练习 – 2012-02-02 03:15:00

+0

反正checkbox有同样的问题,一旦复选框被点击,用户还会得到2个标记 – 2012-02-02 03:26:33