[翻译]在asp.net datagrid中实现多行数据编辑和删除


cs代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Configuration;
namespace DelhiApp.Testing
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.DataGrid DataGrid2;
protected System.Web.UI.WebControls.Panel Panel3;
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
BindData(DataGrid2);
Button2.Attributes.Add("onclick","return confirm('Are you sure you wish to delete these records?');");
}
}
private void BindData(DataGrid DataGrid1)
{
OleDbConnection con=new OleDbConnection(ConfigurationSettings.AppSettings["connectionString"]);
OleDbCommand cmd=new OleDbCommand();
cmd.CommandText="select * from emp";
cmd.Connection=con;
cmd.Connection.Open();
OleDbDataReader dr=cmd.ExecuteReader();
DataGrid1.DataSource=dr;
DataGrid1.DataBind();
cmd.Connection.Close();
}
Web Form Designer generated code
private void Button2_Click(object sender, System.EventArgs e)
{
foreach(DataGridItem objItem in DataGrid2.Items)
{
if (objItem.ItemType != ListItemType.Header && objItem.ItemType != ListItemType.Footer && objItem.ItemType != ListItemType.Pager)
{
if(((CheckBox)objItem.Cells[0].FindControl("cbSelected")).Checked == true)
{
OleDbConnection con=new OleDbConnection(ConfigurationSettings.AppSettings["connectionString"]);
OleDbCommand cmd=new OleDbCommand();
cmd.CommandText="DELETE from emp where empId=@empId";
cmd.Parameters.Add("@empId",OleDbType.Numeric).Value=DataGrid2.DataKeys[objItem.ItemIndex];
cmd.Connection=con;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
}
BindData(DataGrid2);
}
private void Delete_Grid(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
OleDbConnection con=new OleDbConnection(ConfigurationSettings.AppSettings["connectionString"]);
OleDbCommand cmd=new OleDbCommand();
cmd.CommandText="DELETE from emp where empId=@empId";
cmd.Parameters.Add("@empId",OleDbType.Numeric).Value=DataGrid2.DataKeys[e.Item.ItemIndex];
cmd.Connection=con;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
DataGrid2.EditItemIndex=-1;
BindData(DataGrid2);
}
private void Edit_Grid(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid2.EditItemIndex = e.Item.ItemIndex;
// Always bind the data so the datagrid can be displayed.
BindData(DataGrid2);
}
private void Update_Grid(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
OleDbConnection con=new OleDbConnection(ConfigurationSettings.AppSettings["connectionString"]);
OleDbCommand cmd=new OleDbCommand();
cmd.CommandText="UPDATE emp SET empName=@empName, salary=@salary, joiningDate=@joiningDate where empId=@empId";
cmd.Parameters.Add("@empName",OleDbType.Char).Value=((TextBox)e.Item.Cells[1].Controls[0]).Text;
cmd.Parameters.Add("@salary",OleDbType.Numeric).Value=((TextBox)e.Item.Cells[2].Controls[0]).Text;
cmd.Parameters.Add("@joiningDate",OleDbType.Date).Value=((TextBox)e.Item.Cells[3].Controls[0]).Text;
cmd.Parameters.Add("@empId",OleDbType.Numeric).Value=DataGrid2.DataKeys[e.Item.ItemIndex];
cmd.Connection=con;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
DataGrid2.EditItemIndex=-1;
BindData(DataGrid2);
}
private void Cancel_Grid(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid2.EditItemIndex = -1;
BindData(DataGrid2);
}
}
}
