求助:如何实现checkedListBox的全选和反选功能?
如何实现checkedListBox的全选和反选功能?
全选后要在数据库中删除那些选中的数据.是不是要用循环语句来一条条删除?
------解决方案--------------------      <script language="javascript" type="text/javascript">
function GetAllCheckBox(chbAll){
   var items = document.getElementsByTagName("input");    
   for(i=0; i<items.length;i++){      
       if(items[i].type=="checkbox"){
           items[i].checked = chbAll.checked;
       }
   }
}
</script>
  <asp:GridView ID="gvAskAll" runat="server" AutoGenerateColumns="False" DataSourceID="odsAskAll"
           Font-Size="14px" DataKeyNames="AskID" AllowPaging="true" PageSize="20">
           <Columns>
               <asp:TemplateField>
                    <HeaderTemplate>
                   <input id="chbAll" type="CHECKBOX" runat="Server" onclick="GetAllCheckBox(this)"/>全选
                   </HeaderTemplate>
                   <ItemTemplate>
                   <input type="CHECKBOX" id="cbSlect" runat="Server" value='<%#Eval("AskID")%>'/>
                   </ItemTemplate>
                   <ItemStyle Width="80px" />
               </asp:TemplateField>             
           </Columns>
       </asp:GridView>
后台
for (int i = 0; i < gvAskAll.Rows.Count; i++)
           {
               System.Web.UI.HtmlControls.HtmlInputCheckBox cb = (System.Web.UI.HtmlControls.HtmlInputCheckBox)this.gvAskAll.Rows[i].Cells[0].FindControl("cbSlect");
               if (cb.Checked)
               {
                   string askid = cb.Value.ToString();
                   string state=ddlState.SelectedValue.ToString();
                   执行方法
               }
           }
------解决方案--------------------这个实现的方法很多,我的实现方法是:用JS来处理“全选/反选”,后台获取选中的列表,将获取的值的集合用 一个存储过程删除或其它处理。
前台控件及JS代码:
<input type="checkbox"  id="selectMsg"  name="selectMsg" value ="<%#Eval("FID")%>" /> <!-- 这个HTML控件放在你想放的其它控件里或单独使用, <%#Eval("FID")%>绑定一张表里的FK -->
<input id="chkAddAll" onclick="javascript:checkAll(this,'selectMsg')" type="checkbox" value="全选/全否" name="chkAddAll" />
// 选择所有,或全不选择 JS
function checkAll(check,objName){
  var a = document.getElementsByTagName("input");
  for (var i=0; i<a.length; i++)
  {
      if (a[i].type == "checkbox" && a[i].name==objName)  
         {
	         a[i].checked = !check.checked;
	         a[i].click();
         }
  }
}
后台:
我用Request.Form["selectMsg"] 来获取选中的FID的值的字符串,其中值是自动用","分隔的,我们将字符串再分隔成一个数组,将数组传到数据库进行处理,我用的ORACLE:
string ids = Request.Form["selectMsg"].ToString();// 以下都是假设不分空的情况
string[] msgSelt = ids.Split(new char[] { ',' });
DBAccess.ExcuteArrayProcedure("MSGPAGRECE.DELMSGRECE", msgSelt);// 调用存储过程
        /// <summary>
       /// 存储过程中的参数为字符数组时调用的 函数
       /// </summary>
       /// <param name="procedureName"></param>
       /// <param name="charArray"></param>
       public static void ExcuteArrayProcedure(string procedureName, string[] charArray)
       {
           string connectionstring = Common.GetConnString;
           using (Oracle.DataAccess.Client.OracleConnection connection = new Oracle.DataAccess.Client.OracleConnection(connectionstring))