日期:2014-05-20  浏览次数:21186 次

求助:如何实现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))