![](https://i-blog.csdnimg.cn/blog_migrate/40ce85ffa95959bcc0093eaffd442444.jpeg)
一、界面设置
1、在页面上添加五个标签和五个文本框和一个按扭,用于添加数据。
2、在页面上添加一个表格,给表格添加五个绑定列一两个按钮列。
1、在页面上添加五个标签和五个文本框和一个按扭,用于添加数据。
2、在页面上添加一个表格,给表格添加五个绑定列一两个按钮列。
![](https://i-blog.csdnimg.cn/blog_migrate/64f29f8299d6b596dc7437e0dfafbd46.jpeg)
二、CS代码
1、//页面初始化
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.TextBox txt_userid;
protected System.Web.UI.WebControls.TextBox txt_level;
protected System.Web.UI.WebControls.TextBox txt_name;
protected System.Web.UI.WebControls.TextBox txt_station;
protected System.Web.UI.WebControls.TextBox txt_dept;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Label Label5;
private static DataSet ds;
private static SqlConnection con;
private static SqlDataAdapter da;
private static string id="";
2、//页面加载事件对da对象进行设置
private void Page_Load(object sender, System.EventArgs e){
if(!IsPostBack){
con=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["server"]);
con.Open();
da=new SqlDataAdapter();
//当DataAdapter对象执行fill()或update()方法时,会分别调用以下四个命令对数据库进行访问和回添解析
da.SelectCommand=new SqlCommand("select userid,name,level,station,dept,ID from verifya",con);
da.UpdateCommand=new SqlCommand("update verifya set userid=@userid,name=@name,level=@level,station=@station,dept=@dept
private void Page_Load(object sender, System.EventArgs e){
if(!IsPostBack){
con=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["server"]);
con.Open();
da=new SqlDataAdapter();
//当DataAdapter对象执行fill()或update()方法时,会分别调用以下四个命令对数据库进行访问和回添解析
da.SelectCommand=new SqlCommand("select userid,name,level,station,dept,ID from verifya",con);
da.UpdateCommand=new SqlCommand("update verifya set userid=@userid,name=@name,level=@level,station=@station,dept=@dept
where
id=@id",con);
da.DeleteCommand=new SqlCommand("delete from verifya where id=@id",con);
da.InsertCommand=new SqlCommand("insert into verifya(userid,name,level,station,dept) values
da.DeleteCommand=new SqlCommand("delete from verifya where id=@id",con);
da.InsertCommand=new SqlCommand("insert into verifya(userid,name,level,station,dept) values
(@userid,@name,@level,@station,@dept)",con);
//为UpdateCommand命令填加参数,并设置参数值。参数值为内存表被改动的行值.
//参数的value应该等于内存表中被修改行的userid值
da.UpdateCommand.Parameters.Add("@userid",SqlDbType.VarChar ,10,"userid");
//参数的value应该等于内存表中被修改行的name值
da.UpdateCommand.Parameters.Add("@name",SqlDbType.VarChar,10,"name");
//参数的value应该等于内存表中被修改行的level值
da.UpdateCommand.Parameters.Add("@level",SqlDbType.VarChar,10,"level");
//参数的value应该等于内存表中被修改行的station值
da.UpdateCommand.Parameters.Add("@station",SqlDbType.VarChar,30,"station");
//参数的value应该等于内存表中被修改行的DEPT值
da.UpdateCommand.Parameters.Add("@dept",SqlDbType.VarChar,10,"dept");
//参数的value应该等于内存表中被修改行的ID值
da.UpdateCommand.Parameters.Add("@id",SqlDbType.UniqueIdentifier,16,"id");
//为DeleteCommand命令填加参数,并设置参数值。参数值为内存表被删除的行值
//参数的value应该等于内存表中被删除行的id值
da.DeleteCommand.Parameters.Add("@id",SqlDbType.UniqueIdentifier,16,"id");
//为InsertCommand命令填加参数,并设置参数值。参数值为内存表被插入的行值
//参数的value应该等于内存表中被修改行的userid值
da.InsertCommand.Parameters.Add("@userid",SqlDbType.VarChar ,10,"userid");
//参数的value应该等于内存表中被修改行的name值
da.InsertCommand.Parameters.Add("@name",SqlDbType.VarChar,10,"name");
//参数的value应该等于内存表中被修改行的level值
da.InsertCommand.Parameters.Add("@level",SqlDbType.VarChar,10,"level");
//参数的value应该等于内存表中被修改行的station值
da.InsertCommand.Parameters.Add("@station",SqlDbType.VarChar,30,"station");
//参数的value应该等于内存表中被修改行的dept值
da.InsertCommand.Parameters.Add("@dept",SqlDbType.VarChar,10,"dept");
//声明记录集对象
ds=new DataSet();
//将数据库中提取出的数据加载到记录集
da.Fill(ds,"verify");
//关闭数据库
con.Close();
//给表格设置数据源
DataGrid.DataSource=ds.Tables["verify"];
//数据绑定
DataGrid.DataBind();
} }
//为UpdateCommand命令填加参数,并设置参数值。参数值为内存表被改动的行值.
//参数的value应该等于内存表中被修改行的userid值
da.UpdateCommand.Parameters.Add("@userid",SqlDbType.VarChar ,10,"userid");
//参数的value应该等于内存表中被修改行的name值
da.UpdateCommand.Parameters.Add("@name",SqlDbType.VarChar,10,"name");
//参数的value应该等于内存表中被修改行的level值
da.UpdateCommand.Parameters.Add("@level",SqlDbType.VarChar,10,"level");
//参数的value应该等于内存表中被修改行的station值
da.UpdateCommand.Parameters.Add("@station",SqlDbType.VarChar,30,"station");
//参数的value应该等于内存表中被修改行的DEPT值
da.UpdateCommand.Parameters.Add("@dept",SqlDbType.VarChar,10,"dept");
//参数的value应该等于内存表中被修改行的ID值
da.UpdateCommand.Parameters.Add("@id",SqlDbType.UniqueIdentifier,16,"id");
//为DeleteCommand命令填加参数,并设置参数值。参数值为内存表被删除的行值
//参数的value应该等于内存表中被删除行的id值
da.DeleteCommand.Parameters.Add("@id",SqlDbType.UniqueIdentifier,16,"id");
//为InsertCommand命令填加参数,并设置参数值。参数值为内存表被插入的行值
//参数的value应该等于内存表中被修改行的userid值
da.InsertCommand.Parameters.Add("@userid",SqlDbType.VarChar ,10,"userid");
//参数的value应该等于内存表中被修改行的name值
da.InsertCommand.Parameters.Add("@name",SqlDbType.VarChar,10,"name");
//参数的value应该等于内存表中被修改行的level值
da.InsertCommand.Parameters.Add("@level",SqlDbType.VarChar,10,"level");
//参数的value应该等于内存表中被修改行的station值
da.InsertCommand.Parameters.Add("@station",SqlDbType.VarChar,30,"station");
//参数的value应该等于内存表中被修改行的dept值
da.InsertCommand.Parameters.Add("@dept",SqlDbType.VarChar,10,"dept");
//声明记录集对象
ds=new DataSet();
//将数据库中提取出的数据加载到记录集
da.Fill(ds,"verify");
//关闭数据库
con.Close();
//给表格设置数据源
DataGrid.DataSource=ds.Tables["verify"];
//数据绑定
DataGrid.DataBind();
} }
3、当点击添加按扭
private void Add_Click(object sender, System.EventArgs e)//添加数据
{
try//若插入重复值或插入数值不合理,会导致插入失败而引发异常,在这里捕获异常,并显示提示信息
{
DataRow d=ds.Tables["verify"].NewRow();//声明行变量d,d与stu表中的行结构相同
d["userid"]=txt_userid.Text;//向这一新行的列中赋值
d["name"]=txt_name.Text;//向这一新行的列中赋值
d["level"]=txt_level.Text;//向这一新行的列中赋值
d["station"]=txt_station.Text;//向这一新行的列中赋值
d["dept"]=txt_dept.Text;//向这一新行的列中赋值
ds.Tables["verify"].Rows.Add(d);//将这一新行追加入verify表中
//将做新行的值做为参数传给InsertCommand命令,并调用InsertCommand命令,
去将新行插入数据库中,将内存表中的变动解析回数据库
da.Update(ds,"verify");
//重新绑定DataGrid
DataGrid.DataSource=ds.Tables["verify"];
DataGrid.DataBind();
}
catch
{
Response.Write("输入值重复或数值类型不相配");
}
}
private void Add_Click(object sender, System.EventArgs e)//添加数据
{
try//若插入重复值或插入数值不合理,会导致插入失败而引发异常,在这里捕获异常,并显示提示信息
{
DataRow d=ds.Tables["verify"].NewRow();//声明行变量d,d与stu表中的行结构相同
d["userid"]=txt_userid.Text;//向这一新行的列中赋值
d["name"]=txt_name.Text;//向这一新行的列中赋值
d["level"]=txt_level.Text;//向这一新行的列中赋值
d["station"]=txt_station.Text;//向这一新行的列中赋值
d["dept"]=txt_dept.Text;//向这一新行的列中赋值
ds.Tables["verify"].Rows.Add(d);//将这一新行追加入verify表中
//将做新行的值做为参数传给InsertCommand命令,并调用InsertCommand命令,
去将新行插入数据库中,将内存表中的变动解析回数据库
da.Update(ds,"verify");
//重新绑定DataGrid
DataGrid.DataSource=ds.Tables["verify"];
DataGrid.DataBind();
}
catch
{
Response.Write("输入值重复或数值类型不相配");
}
}
4、当点击表格的编辑按钮
private void DataGrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//从DataGrid中取出要更新记录的ID
id=(string)e.Item.Cells[5].Text;
//设置表格的编辑行索引值为当前行的索引
DataGrid.EditItemIndex=e.Item.ItemIndex;
//重新绑定数据源
DataGrid.DataSource=ds.Tables["verify"];
DataGrid.DataBind();
}
5、当点击取消按钮
private void DataGrid_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
private void DataGrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//从DataGrid中取出要更新记录的ID
id=(string)e.Item.Cells[5].Text;
//设置表格的编辑行索引值为当前行的索引
DataGrid.EditItemIndex=e.Item.ItemIndex;
//重新绑定数据源
DataGrid.DataSource=ds.Tables["verify"];
DataGrid.DataBind();
}
5、当点击取消按钮
private void DataGrid_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
//设置表格的编辑行索引值为-1
DataGrid.EditItemIndex=-1;
//重新绑定数据源
DataGrid.DataSource=ds.Tables["verify"];
DataGrid.DataBind(); }
DataGrid.EditItemIndex=-1;
//重新绑定数据源
DataGrid.DataSource=ds.Tables["verify"];
DataGrid.DataBind(); }
6、当点击更新按钮
private void DataGrid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
private void DataGrid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
string userid=((TextBox)(e.Item.Cells[0].Controls[0])).Text;
string name=((TextBox)(e.Item.Cells[1].Controls[0])).Text;
string level=((TextBox)(e.Item.Cells[2].Controls[0])).Text;
string station=((TextBox)(e.Item.Cells[3].Controls[0])).Text;
string dept=((TextBox)(e.Item.Cells[4].Controls[0])).Text;
DataRow[] d=ds.Tables["verify"].Select("id='"+id+"'");//在内存表中找出想修改的行
for(int i=0;i<d.Length;i++)
{
d[i]["userid"]=userid;//在内存表中把予修改的行中的列值进行赋值
d[i]["name"]=name;//在内存表中把予修改的行中的列值进行赋值
d[i]["level"]=level;//在内存表中把予修改的行中的列值进行赋值
d[i]["station"]=station;//在内存表中把予修改的行中的列值进行赋值
d[i]["dept"]=dept;//在内存表中把予修改的行中的列值进行赋值
}
//将被修改的行值做为参数传给UpdateCommand命令,并调用UpdateCommand命令,
去修改数据库中相应值,将内存表中的变动解析回数据库
da.Update(ds,“verify”);
ds.AcceptChanges();//将内存表进行物理变更
DataGrid.EditItemIndex=-1;//恢复DataGrid
//用内存表重新绑定DataGrid
DataGrid.DataSource=ds.Tables["verify"];
DataGrid.DataBind();
}
string name=((TextBox)(e.Item.Cells[1].Controls[0])).Text;
string level=((TextBox)(e.Item.Cells[2].Controls[0])).Text;
string station=((TextBox)(e.Item.Cells[3].Controls[0])).Text;
string dept=((TextBox)(e.Item.Cells[4].Controls[0])).Text;
DataRow[] d=ds.Tables["verify"].Select("id='"+id+"'");//在内存表中找出想修改的行
for(int i=0;i<d.Length;i++)
{
d[i]["userid"]=userid;//在内存表中把予修改的行中的列值进行赋值
d[i]["name"]=name;//在内存表中把予修改的行中的列值进行赋值
d[i]["level"]=level;//在内存表中把予修改的行中的列值进行赋值
d[i]["station"]=station;//在内存表中把予修改的行中的列值进行赋值
d[i]["dept"]=dept;//在内存表中把予修改的行中的列值进行赋值
}
//将被修改的行值做为参数传给UpdateCommand命令,并调用UpdateCommand命令,
去修改数据库中相应值,将内存表中的变动解析回数据库
da.Update(ds,“verify”);
ds.AcceptChanges();//将内存表进行物理变更
DataGrid.EditItemIndex=-1;//恢复DataGrid
//用内存表重新绑定DataGrid
DataGrid.DataSource=ds.Tables["verify"];
DataGrid.DataBind();
}
7、当点击删除按钮
private void DataGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
id=(string)e.Item.Cells[5].Text;//从DataGrid中取出被删行的学号
DataRow[] d=ds.Tables["verify"].Select("id='"+id+"'");//在内存表中找出想删行
for(int i=0;i<d.Length;i++)
{
d[i].Delete();//在内存表中把予删的行做删除标记
}
//将做删除标记的行的值做为参数传给DeleteCommand命令,并调用DeleteCommand命令,
去删除数据库中相应行,将内存表中的变动解析回数据库
da.Update(ds,"verify");
ds.AcceptChanges();//将内存表进行物理变更
DataGrid.DataSource=ds.Tables["verify"]; //用内存表重新绑定DataGrid
DataGrid.DataBind();
}
private void DataGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
id=(string)e.Item.Cells[5].Text;//从DataGrid中取出被删行的学号
DataRow[] d=ds.Tables["verify"].Select("id='"+id+"'");//在内存表中找出想删行
for(int i=0;i<d.Length;i++)
{
d[i].Delete();//在内存表中把予删的行做删除标记
}
//将做删除标记的行的值做为参数传给DeleteCommand命令,并调用DeleteCommand命令,
去删除数据库中相应行,将内存表中的变动解析回数据库
da.Update(ds,"verify");
ds.AcceptChanges();//将内存表进行物理变更
DataGrid.DataSource=ds.Tables["verify"]; //用内存表重新绑定DataGrid
DataGrid.DataBind();
}
![](https://i-blog.csdnimg.cn/blog_migrate/1cdceaebf009e2fa66c51fb9c7075316.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/40ce85ffa95959bcc0093eaffd442444.jpeg)
转载于:https://blog.51cto.com/chenxing/45666