前面已经知道了gridview的基本操作包括删除、编辑等,现在我想加入批量删除以及删除之前用户进行确认,添加数据等功能,这样的话就必须增加一列,加入模板域,在 模板项内加入复选框,对gridview控件修改如下:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="AccessDataSource1" DataKeyNames="stu_xh">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked="false" Text='<%#DataBinder.Eval(Container.DataItem,"stu_id") %>' />
</ItemTemplate>
<HeaderTemplate>
<input id="CheckAll" type="checkbox" οnclick="selectAll(this);" />本页全选
</HeaderTemplate>
</asp:TemplateField>
<asp:BoundField DataField="stu_xh" HeaderText="stu_xh" SortExpression="stu_xh" />
<asp:BoundField DataField="stu_pwd" HeaderText="stu_pwd" SortExpression="stu_pwd" />
<asp:BoundField DataField="stu_clsBDM" HeaderText="stu_clsBDM" SortExpression="stu_clsBDM" />
<asp:BoundField DataField="stu_sfzh" HeaderText="stu_sfzh" SortExpression="stu_sfzh" />
<asp:CommandField ShowDeleteButton="True" />
<asp:BoundField DataField="stu_name" HeaderText="stu_name" SortExpression="stu_name" />
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
加入button删除确认: <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" OnClientClick="return confirm('确认要删除吗?');" />
加入javascript客户端实现复选框全选功能:
<script language="javascript" type="text/javascript">
function selectAll(obj)
{
var theTable = obj.parentElement.parentElement.parentElement;
var i;
var j = obj.parentElement.cellIndex;
for(i=0;i<theTable.rows.length;i++)
{
var objCheckBox = theTable.rows[i].cells[j].firstChild;
if(objCheckBox.checked!=null)objCheckBox.checked = obj.checked;
}
}
</script>
然后在gridview.aspx.cs里加入以下内容:
protected ArrayList SelectedItems
{
get
{
return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;
}
set
{
ViewState["mySelectedItems"] = value;
}
}
protected void GridView1_DataBinding(object sender, EventArgs e)
{
//在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
CollectSelected();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//这里的处理是为了回显之前选中的情况
if (e.Row.RowIndex > -1 && this.SelectedItems != null)
{
DataRowView row = e.Row.DataItem as DataRowView;
CheckBox cb = e.Row.FindControl("CheckBox1") as CheckBox;
if (this.SelectedItems.Contains(row["stu_id"].ToString()))
cb.Checked = true;
else
cb.Checked = false;
}
}
protected void CollectSelected()
{
ArrayList selectedItems = null;
if (this.SelectedItems == null)
selectedItems = new ArrayList();
else
selectedItems = this.SelectedItems;
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
string id = this.GridView1.Rows[i].Cells[1].Text;
CheckBox cb = this.GridView1.Rows[i].FindControl("CheckBox1") as CheckBox;
if (selectedItems.Contains(id) && !cb.Checked)
selectedItems.Remove(id);
if (!selectedItems.Contains(id) && cb.Checked)
selectedItems.Add(id);
}
this.SelectedItems = selectedItems;
}
protected void Button1_Click(object sender, EventArgs e)
{
CollectSelected();
foreach (object tmp in this.SelectedItems)
{
string sqlstr;
sqlstr= "delete from student where stu_xh='" + tmp.ToString()+"'";
AccessDataSource1.DeleteCommand = sqlstr;
//Response.Write(sqlstr);
AccessDataSource1.Delete();
}
}