Datagrid实现数据绑定后,第一列用CheckBox实现全选功能。代码如下:
test1.aspx
<HEAD>
<title>Admin_Reguser</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="admin_Style.css" type="text/css" rel="stylesheet">
<script language="javascript">
function SelectAll(tempControl)
{
//将除头模板中的其它所有的CheckBox取反
var theBox=tempControl;
xState=theBox.checked;
elem=theBox.form.elements;
for(i=0;i<elem.length;i++)
if(elem[i].type=="checkbox" && elem[i].id!=theBox.id)
{
if(elem[i].checked!=xState)
elem[i].click();
}
}
</script>
</HEAD>datagrid中全选列模板:
<asp:TemplateColumn>
<HeaderStyle Font-Size="9pt" Width="2%"></HeaderStyle>
<ItemStyle Font-Size="11px" HorizontalAlign="Center" Width="15px"></ItemStyle>
<HeaderTemplate>
<asp:CheckBox id="chkAll" onclick="javascript:SelectAll(this);" runat="server" AutoPostBack="false"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkUserID" runat="server"></asp:CheckBox><INPUT id=SelectedID type=hidden value='<%# DataBinder.Eval(Container.DataItem, "UserID")%>' runat="server">
</ItemTemplate>
</asp:TemplateColumn>
后台实现:
CheckBox chkTmp;
string strTmpID="";
foreach (DataGridItem oDataGridItem in this.dgrdUser.Items)
{
chkTmp = (CheckBox)oDataGridItem.FindControl("chkUserID");
if (chkTmp.Checked)
{
strTmpID+=((HtmlInputHidden)oDataGridItem.FindControl("SelectedID")).Value+",";
}
}
return strTmpID;根据网上流传的方法做的。前台已实现全选或取消功能,就是后台得不到已选择的某几行的值,不知道为什么?
test1.aspx
<HEAD>
<title>Admin_Reguser</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="admin_Style.css" type="text/css" rel="stylesheet">
<script language="javascript">
function SelectAll(tempControl)
{
//将除头模板中的其它所有的CheckBox取反
var theBox=tempControl;
xState=theBox.checked;
elem=theBox.form.elements;
for(i=0;i<elem.length;i++)
if(elem[i].type=="checkbox" && elem[i].id!=theBox.id)
{
if(elem[i].checked!=xState)
elem[i].click();
}
}
</script>
</HEAD>datagrid中全选列模板:
<asp:TemplateColumn>
<HeaderStyle Font-Size="9pt" Width="2%"></HeaderStyle>
<ItemStyle Font-Size="11px" HorizontalAlign="Center" Width="15px"></ItemStyle>
<HeaderTemplate>
<asp:CheckBox id="chkAll" onclick="javascript:SelectAll(this);" runat="server" AutoPostBack="false"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkUserID" runat="server"></asp:CheckBox><INPUT id=SelectedID type=hidden value='<%# DataBinder.Eval(Container.DataItem, "UserID")%>' runat="server">
</ItemTemplate>
</asp:TemplateColumn>
后台实现:
CheckBox chkTmp;
string strTmpID="";
foreach (DataGridItem oDataGridItem in this.dgrdUser.Items)
{
chkTmp = (CheckBox)oDataGridItem.FindControl("chkUserID");
if (chkTmp.Checked)
{
strTmpID+=((HtmlInputHidden)oDataGridItem.FindControl("SelectedID")).Value+",";
}
}
return strTmpID;根据网上流传的方法做的。前台已实现全选或取消功能,就是后台得不到已选择的某几行的值,不知道为什么?
解决方案 »
- 获取上一个页面的url地址的一部分
- 菜鸟评论:今天看了Castle MonoRail框架,说实话觉得很垃圾
- 在asp.net中有没有现在的函数去判断输入的是否为数字?
- asp.net(C#)如何访问Lotus Notes数据库
- 新手问路??在C#中ASP.NET的有关链接按钮怎么不是指向它才加下划线
- 如何同时取到sybase存储过程的返回值和返回结果集合?
- 奇怪!关于Visual Web Developer 2005 Express Edition Beta的问题
- [FreeTextBox]用过FreeTextBox的请进来
- asp中Cookie用法
- [HELP]为什么我的计算机信息管理不能用了?
- 小弟新来宝地,弱弱的问一下,最好用过2005 Team Suite的大虾来帮忙
- 请教一个Dropdownlist控件SelectedIndexChanged的问题,急,在线等!!!!!!
http://singlepine.cnblogs.com/articles/266538.html
using System.Text;private void btndelete_Click(object sender, System.EventArgs e)
{
StringBuilder s=new StringBuilder();
foreach(DataGridItem di in DataGrid1.Items)
{
if(((CheckBox)(di.FindControl("chkUserID"))).Checked==true)
{
s.Append(",").Append(DataGrid1.DataKeys[di.ItemIndex].ToString());
}
}
if(s.ToString().StartsWith(",")==true)
{
delete(s.ToString().Substring(1,s.ToString().Length-1));
}
}private void delete(string id)
{
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
string sql=@"declare @sql nvarchar(400)
set @sql = 'delete from testgrid where UserID in('+@UserID+')'
exec( @sql)";
SqlCommand comm=new SqlCommand(sql,conn);
SqlParameter parm1=new SqlParameter("@UserID",SqlDbType.VarChar,200);
parm1.Value=id;
comm.Parameters.Add(parm1);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
DataBind();
}
我直接在
if(((CheckBox)(di.FindControl("chkUserID"))).Checked==true)
{
Response.write("chkUserID founded");
}运行结果并没有输入这条语句。是不是没有查找到chkUserID这个控件哦。