一、界面设置
1、在页面上添加五个标签和五个文本框和一个按扭,用于添加数据。
2、在页面上添加一个表格,给表格添加五个绑定列一两个按钮列。

二、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
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
(@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();
    } }
 
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("输入值重复或数值类型不相配");
   }
}
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){   
    //设置表格的编辑行索引值为-1
    DataGrid.EditItemIndex=-1;
    //重新绑定数据源
    DataGrid.DataSource=ds.Tables["verify"];
    DataGrid.DataBind(); }
6、当点击更新按钮
    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();
}
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();
}