首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

:怎么实现checkedListBox的全选和反选功能

2012-01-02 
求助:如何实现checkedListBox的全选和反选功能?如何实现checkedListBox的全选和反选功能?全选后要在数据库

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


{
try
{
connection.Open();
Oracle.DataAccess.Client.OracleCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procedureName;
Oracle.DataAccess.Client.OracleParameter parameter = new Oracle.DataAccess.Client.OracleParameter(@"M_ARRAY", Oracle.DataAccess.Client.OracleDbType.Varchar2);
parameter.Direction = ParameterDirection.Input;
parameter.Value = charArray;
parameter.CollectionType = Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray;
cmd.Parameters.Add(parameter);

cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
connection.Dispose();
connection.Close();
}
}
}

热点排行