日期:2014-05-18  浏览次数:20419 次

checkboxlist的bug?
string   AdminUserID=dt.Rows[0][ "UserID "].ToString();
               

                      char[]   a={ ', '};
                      String[]   ID   =   AdminUserID.Split(a);
                      bool   ok   =   false;
                     
                      for   (int   i   =   0;   i   <   ID.Length-1;   i++)
                      {
                            foreach   (ListItem   item   in   RoleCheckBox.Items)
                              {//有符合条件的管理员,全部设为选中状态
                                      item.Selected   =   false;
                                      if   (item.Value   ==   ID[i].ToString())
                                      {
                                              item.Selected   =   true;
                                      }
                              }
                      }
为什么有两个符合条件的数据确只有一个处于选中状态?
难道是bug?

------解决方案--------------------
因为item的value重复了.
------解决方案--------------------
50%可能性,if (item.Value.Trim() == ID[i].ToString().Trim())
------解决方案--------------------
问题出在 item.Selected = false;
因为你每次都是先设所有的checkbox未不选中,只有符合条件了才把一个选中,但你忘记了,外层循环后,你又执行了foreach (ListItem item in RoleCheckBox.Items)
item.Selected = false;
上次被选中的那个又被item.Selected = false了,
所以按照你的代码,就算有10个符合条件的,也只有最后一个会选中,且每次都是最后一个被选中