.net中如何在GridView里放复选按钮(ChekBox)以便批量删除
发布网友
发布时间:2022-04-27 12:50
我来回答
共5个回答
热心网友
时间:2022-04-27 14:20
1.编辑模版列,在<ItemTemplate>拖入一个CheckBox.
2.GridView绑定的时候指定他的DataKeyNames属性,比如 GridView1.DataKeyNames = new string[] { "id" }; 如果是用数据源控件绑定的,就DataKeyNames="id",加上这个属性
3.protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=shen;database=沈军辉;user id=sa;password=");
SqlCommand cmd;
for (int i = 0; i < GridView2.Rows.Count ; i++)
{
CheckBox cb = (CheckBox)GridView2.Rows[i].FindControl("CheckBox1");
if (cb.Checked == true)
{
cmd = new SqlCommand("delete from 学生 where 学号="+ GridView2.DataKeys[i].Value +"",conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
bind();//删除后重新绑定
}
热心网友
时间:2022-04-27 15:38
1.在标题前加入一个模板列,在模板列里加入一个CheckBox.
2.设置好GridView的DataKeyNames属性为主键
3.给你一个获取CheckBox选中情况的函数
/// <summary>
/// 获取GridView中选中的CheckBox对应行数据主键列表
/// </summary>
/// <param name="gv">GridView</param>
/// <param name="cb_id">CheckBox的ID</param>
/// <returns>返回选中列主键字符串</returns>
public static string GetCheckedBox(GridView gv, string cb_id)
{
string ids = ""; //选中的主健列表 格式:1,2,3
foreach (GridViewRow r in gv.Rows)
{
if (r.RowType == DataControlRowType.DataRow)
{
CheckBox cb = (CheckBox)r.FindControl(cb_id);
if (cb.Checked == true)
{
ids += gv.DataKeys[r.RowIndex].Value.ToString().Trim() + ",";
}
}
}
//长度大于0表示有选中的CheckBox,删除最后的,号!长度为0表示没有选中的CheckBox,返回一个空串!
return ids.Length > 0 ? ids.Substring(0, ids.Length - 1) : string.Empty;
}
用上面的函数获取到了选中列的所有主键,然后
4.如使用刚才的函数,返回选中的主键列变量名是 keys,
表名是:TableName 主键名是:KeyName
删除的sql就是 string sql = "Delete From TableName Where KeyName In ("+ keys +")"
执行这个sql就OK了
热心网友
时间:2022-04-27 17:12
第一步:先加入脚本
<script language="javascript" type="text/javascript">
function setCheckBox(frm)
{
var objCheckBoxItem = document.getElementsByTagName("input")
if (frm.GridView_ctl01_chkAll.checked)
{
for (var i = 0; i < objCheckBoxItem.length; i++)
if (objCheckBoxItem[i].type == "checkbox")
objCheckBoxItem[i].checked = true;
}
else
{
for (var i = 0; i < objCheckBoxItem.length; i++)
if (objCheckBoxItem[i].type == "checkbox")
objCheckBoxItem[i].checked = false;
}
}
</script>
--------------------------------
第二部:在页面上加入删除按钮(不是在GridView里),在GridView的<Columns>标签下加入ChekBox。
1.删除按钮:
<asp:ImageButton ID="btnDel" runat="server" ImageUrl="" width="56" height="22" hspace="3" ImageAlign="absmiddle" OnClick="btnDel_Click" />
2.GridView:
<asp:TemplateField>
<HeaderStyle CssClass="gr1"/>
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:checkbox id="chkItem" runat="server"></asp:checkbox>
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server"/>
</HeaderTemplate>
</asp:TemplateField>
---------------------------------------
第三部:后台代码
////////RowDataBound事件
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.Header)
{
((CheckBox)e.Row.FindControl("chkAll")).Attributes.Add("onclick", "javascript:setCheckBox(this.form);");
}
}
/////////删除事件
protected void btnDel_Click(object sender, ImageClickEventArgs e)
{
int DeleteCount = 0;
try
{
for(int i = 0; i <= GridView.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)GridView.Rows[i].FindControl("chkItem");
if(cbox.Checked == true)
{
DeleteCount++;
string ID = GridView.DataKeys[i].Value.ToString();
//根据ID执行删除操作
}
}
if(DeleteCount != 0)
{
Page.RegisterStartupScript("", "<script language=javascript>alert('操作成功');</script>");
}
}
catch
{
}
if(DeleteCount == 0)
{
Response.Write("<script language=javascript>alert('请选择您要删除的记录')</script>");
return;
}
//重新绑定一次数据
}
热心网友
时间:2022-04-27 19:04
问题1.标题列放CHeckBox value设为标题
问题2 CheckBox选中时,其Checked属性为true
因此可以通过此属性判断那些是被选中状态
问题3 遍历所有CheckBox 检查其Checked属性,为true的则执行删除。。
热心网友
时间:2022-04-27 21:12
Q1. 选中Gridview --> Edit Templete --> ITem Templete --> 拖个checkbox进去 -->End Templete.
Q2. CheckBOx1.checked 属性进行判断true/false
Q3. 删除操作执行前, 先得到那几行被删除.