|            
(ASP.NET)修改和删除DataGrid行——数据库访问
   
         本程序涉及到数据库的添加,修改和删除操作。
   
         懒得写了,把界面贴出来,照着界面画就可以了。本例数据库:SqlServer2000附带的pubs数据库,看一下连接字符串就很清楚了。如果要在本机器上运行,把uid和pwd改成你自己SQL登陆用户名和密码。
   
         创建一个WEB页面,命名为:Add.aspx。
         界面设计如图:
   
         Add.aspx代码:
  <%@ Page language="c#" Codebehind="Add.aspx.cs" AutoEventWireup="false" Inherits="TeachShow.Charpter7.AccessDataBase.Add" %>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  <HTML>
         <HEAD>
                <title>Add</title>
                <LINK href="../../Style.css" type="text/css" rel="stylesheet">
                <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
                <meta content="C#" name="CODE_LANGUAGE">
                <meta content="JavaScript" name="vs_defaultClientScript">
                <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
         </HEAD>
         <body MS_POSITIONING="GridLayout">
                <form id="Form1" method="post" runat="server">
                       <div align="center">
                              <center>
                                     <table class="smallBlack" height="318" cellSpacing="0" cellPadding="0" width="429" border="0">
                                            <tr>
                                                   <td class="title" vAlign="top" width="429" colSpan="2" height="31">添加一个新的发行者</td>
                                            </tr>
                                            <tr>
                                                   <td vAlign="top" width="79" height="23">发行者ID:</td>
                                                   <td vAlign="top" width="350" height="23"><asp:textbox id="TextBox1" runat="server" Height="18px" CssClass="smallRed"></asp:textbox><FONT face="宋体">(以99打头,共4位数字)</FONT></td>
                                            </tr>
                                            <tr>
                                                   <td vAlign="top" width="79" height="23"><FONT face="宋体">姓名:</FONT></td>
                                                   <td vAlign="top" width="350" height="23"><asp:textbox id="TextBox2" runat="server" Height="18px" CssClass="smallRed"></asp:textbox></td>
                                            </tr>
                                            <tr>
                                                   <td vAlign="top" width="79" height="23"><FONT face="宋体">城市:</FONT></td>
                                                   <td vAlign="top" width="350" height="23"><asp:textbox id="TextBox3" runat="server" Height="18px" CssClass="smallRed"></asp:textbox></td>
                                            </tr>
                                            <tr>
                                                   <td vAlign="top" width="79" height="23"><FONT face="宋体">省份:</FONT></td>
                                                   <td vAlign="top" width="350" height="23"><asp:textbox id="TextBox4" runat="server" Height="18px" CssClass="smallRed"></asp:textbox><FONT face="宋体">(2个字符)</FONT></td>
                                            </tr>
                                            <tr>
                                                   <td vAlign="top" width="79" height="24"><FONT face="宋体">国家:</FONT></td>
                                                   <td vAlign="top" width="350" height="24"><asp:textbox id="TextBox5" runat="server" Height="18px" CssClass="smallRed"></asp:textbox></td>
                                            </tr>
                                            <tr>
                                                   <td vAlign="top" align="center" width="429" colSpan="2" height="24"><asp:linkbutton id="LinkButton1" runat="server">提交到数据库</asp:linkbutton></td>
                                            </tr>
                                            <tr>
                                                   <td width="429" height="147" valign="top" colspan="2">
                                                          <asp:DataGrid id="DataGrid1" runat="server" Height="120px" CssClass="general" Width="428px">
                                                                 <ItemStyle Width="50px"></ItemStyle>
                                                                 <Columns>
                                                                        <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑">
                                                                               <HeaderStyle Width="60px"></HeaderStyle>
                                                                        </asp:EditCommandColumn>
                                                                        <asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
                                                                 </Columns>
                                                          </asp:DataGrid></td>
                                            </tr>
                                     
                              </center>
                       </div>
                </form>
         </body>
  </HTML>
   
         Add.asp.cs代码:
  using System;
  using System.Collections;
  using System.ComponentModel;
  using System.Data;
  using System.Data.SqlClient;
  using System.Drawing;
  using System.Web;
  using System.Web.SessionState;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.HtmlControls;
   
  namespace TeachShow.Charpter7.AccessDataBase
  {
      /// <summary>
      /// Add 的摘要说明。
      /// </summary>
      public class Add : System.Web.UI.Page
      {
          protected System.Web.UI.WebControls.TextBox TextBox1;
          protected System.Web.UI.WebControls.TextBox TextBox2;
          protected System.Web.UI.WebControls.TextBox TextBox3;
          protected System.Web.UI.WebControls.TextBox TextBox4;
          protected System.Web.UI.WebControls.LinkButton LinkButton1;
          protected System.Web.UI.WebControls.DataGrid DataGrid1;
          protected System.Web.UI.WebControls.TextBox TextBox5;
      
          private void Page_Load(object sender, System.EventArgs e)
          {
              // 在此处放置用户代码以初始化页面
              if(!this.IsPostBack)
              {
                  this.BindGrid();
              }
          }
   
          #region Web 窗体设计器生成的代码
          override protected void OnInit(EventArgs e)
          {
              //
             // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
              //
              InitializeComponent();
              base.OnInit(e);
          }
          
          /// <summary>
          /// 设计器支持所需的方法 - 不要使用代码编辑器修改
          /// 此方法的内容。
          /// </summary>
          private void InitializeComponent()
          {    
              this.LinkButton1.Click += new System.EventHandler(this.LinkButton1_Click);
              this.DataGrid1.Disposed += new System.EventHandler(this.DataGrid1_Disposed);
              this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
              this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
              this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
              this.DataGrid1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_DeleteCommand);
              this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
              this.Load += new System.EventHandler(this.Page_Load);
   
          }
          #endregion
   
          private void LinkButton1_Click(object sender, System.EventArgs e)
          {
              AddPublisher();
          }
   
          /// <summary>
          /// 添加
          /// </summary>
          private void AddPublisher()
          {
              string sql="insert into publishers(pub_id,pub_name,city,state,country) values(@pubid,@pubname,@city,@state,@country)";
   
              SqlConnection con=new SqlConnection("server=accp-lzh;uid=sa;pwd=sasa;database=pubs");
              SqlCommand cmd=new SqlCommand(sql,con);
   
              cmd.Parameters.Add(new SqlParameter("@pubid",SqlDbType.Char,4));
              cmd.Parameters["@pubid"].Value=this.TextBox1.Text;
              cmd.Parameters.Add(new SqlParameter("@pubname",SqlDbType.VarChar ,40));
              cmd.Parameters["@pubname"].Value=this.TextBox2.Text;
              cmd.Parameters.Add(new SqlParameter("@city",SqlDbType.Char,20));
              cmd.Parameters["@city"].Value=this.TextBox3.Text;
              cmd.Parameters.Add(new SqlParameter("@state",SqlDbType.Char,2));
              cmd.Parameters["@state"].Value=this.TextBox4.Text;
              cmd.Parameters.Add(new SqlParameter("@country",SqlDbType.VarChar ,30));
              cmd.Parameters["@country"].Value=this.TextBox5.Text;
   
              cmd.Connection.Open();
              cmd.ExecuteNonQuery();
              cmd.Connection.Close();
   
              this.TextBox1.Text="";
              this.TextBox2.Text="";
              this.TextBox3.Text="";
              this.TextBox4.Text="";
              this.TextBox5.Text="";
   
              this.BindGrid();
          }
   
          private void BindGrid()
          {
              SqlConnection con=new SqlConnection("server=accp-lzh;uid=sa;pwd=sasa;database=pubs");
              SqlDataAdapter mysqlcom=new SqlDataAdapter("select * from publishers where pub_id like '99%'",con);
              DataSet myds=new DataSet();
              mysqlcom.Fill(myds,"publishers");
              this.DataGrid1.DataSource=myds.Tables["publishers"].DefaultView ;
              this.DataGrid1.DataBind();
          }
   
          /// <summary>
          /// 点击编辑时触发事件
          /// </summary>
          /// <param name="source"></param>
          /// <param name="e"></param>
          private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
          {
              this.DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
              this.BindGrid();
          }
   
          /// <summary>
          /// 点击取消时触发该事件。
          /// </summary>
          /// <param name="source"></param>
          /// <param name="e"></param>
          private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
          {
              this.DataGrid1.Columns[0].HeaderText="已取消";
              this.DataGrid1.EditItemIndex=-1;
              this.BindGrid();
          }
   
          private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
          {
   
          }
   
          /// <summary>
          /// 点击更新时触发该事件。
          /// </summary>
          /// <param name="source"></param>
          /// <param name="e"></param>
          private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
          {
              SqlConnection con=new SqlConnection("server=accp-lzh;uid=sa;pwd=sasa;database=pubs");
              SqlCommand selectCmd=con.CreateCommand();
              selectCmd.CommandType=CommandType.Text;
              selectCmd.CommandText="select * from publishers where pub_id like '99%'";
   
              SqlDataAdapter sqlAdatper=new SqlDataAdapter();
              sqlAdatper.SelectCommand=selectCmd;
              DataSet ds=new DataSet();
              con.Open();
              sqlAdatper.Fill(ds,"publishers");
              con.Close();
   
              SqlCommand updateCmd=con.CreateCommand();
              updateCmd.CommandText="update publishers set pub_name=@pubname,city=@city,state=@state,country=@country where pub_id=@pub_id";
              SqlParameter PubNamePar=new SqlParameter("@pubname",SqlDbType.VarChar,40,"pub_name");
              updateCmd.Parameters.Add(PubNamePar);
              SqlParameter CityPar=new SqlParameter("@city",SqlDbType.VarChar,20,"city");
              updateCmd.Parameters.Add(CityPar);
              SqlParameter StatePar=new SqlParameter("@state",SqlDbType.Char,2,"state");
              updateCmd.Parameters.Add(StatePar);
              SqlParameter CountryPar=new SqlParameter("@country",SqlDbType.VarChar,30,"country");
              updateCmd.Parameters.Add(CountryPar);
              SqlParameter PubIDPar=new SqlParameter("@pub_id",SqlDbType.Char,4,"pub_id");
              PubIDPar.SourceVersion=DataRowVersion.Original;
              updateCmd.Parameters.Add(PubIDPar);
   
              sqlAdatper.UpdateCommand=updateCmd;
   
              DataTable table=ds.Tables["publishers"];
              table.PrimaryKey=new DataColumn[]
                  {
                      table.Columns["pub_id"]
                  };
              DataRow row=table.Rows.Find(((TextBox)(e.Item.Cells[2].Controls[0])).Text);
              row["pub_name"]=((TextBox)(e.Item.Cells[3].Controls[0])).Text;
              row["city"]=((TextBox)(e.Item.Cells[4].Controls[0])).Text;
              row["state"]=((TextBox)(e.Item.Cells[5].Controls[0])).Text;
              row["country"]=((TextBox)(e.Item.Cells[6].Controls[0])).Text;
   
              con.Open();
              sqlAdatper.Update(table);
              con.Close();
   
              this.DataGrid1.EditItemIndex=-1;
              this.BindGrid();
          }
   
          /// <summary>
          /// 点击删除时触发该事件
          /// </summary>
          /// <param name="source"></param>
          /// <param name="e"></param>
          private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
          {
              SqlConnection con=new SqlConnection("server=accp-lzh;uid=sa;pwd=sasa;database=pubs");
              SqlCommand selectCmd=con.CreateCommand();
              selectCmd.CommandText="select * from publishers where pub_id like '99%'";
   
              SqlCommand deleteCmd=con.CreateCommand();
              deleteCmd.CommandText="delete from publishers where pub_id=@pub_id";
              SqlParameter PubIdPar=new SqlParameter("@pub_id",SqlDbType.Char,4,"pub_id");
              PubIdPar.SourceVersion=DataRowVersion.Original;
              deleteCmd.Parameters.Add(PubIdPar);
   
              SqlDataAdapter sqlAdapter=new SqlDataAdapter();
              sqlAdapter.SelectCommand=selectCmd;
              sqlAdapter.DeleteCommand=deleteCmd;
   
              DataSet ds=new DataSet();
              con.Open();
              sqlAdapter.Fill(ds,"publishers");
              DataTable table=new DataTable();
              table=ds.Tables["publishers"];
              table.PrimaryKey=new DataColumn[]//定义主键,便于查找
                  {
                      table.Columns["pub_id"]
                  };
              DataRow row=table.Rows.Find(e.Item.Cells[2].Text);
              row.Delete();
              sqlAdapter.Update(table);
              con.Close();
   
              this.DataGrid1.EditItemIndex=-1;
              this.BindGrid();
          }
   
          private void DataGrid1_Disposed(object sender, System.EventArgs e)
          {
          
          }
      }
   
 |