关于gridview增删改查,连接数据库的三层架构的例子

    技术2022-05-20  42

    SqlConnection   con;              SqlDataAdapter   da;              SqlCommand   com;              SqlDataReader   dr;              DataSet   ds;              static   string   real   =    "ASC ";                protected   void   Page_Load(object   sender,   EventArgs   e)              {                          Page.SmartNavigation   =   true;                          if   (!this.IsPostBack)                          {                                      this.DropBind(this.droptj);                                      this.Bind();                          }                 }                /***************************************基本方法**********************************************/                #region//数据库连接字符串              public   void   conString()              {                          //string   constr   =    "server=.;uid=sa;pwd=;database=Demo ";                          string   constr   =    "server=.;uid=sa;pwd=;database=pubs ";                          con   =   new   SqlConnection(constr);              }              #endregion                #region//得到记录集方法              public   DataSet   GetData(string   sql)              {                          this.conString();                          da   =   new   SqlDataAdapter(sql,con);                          ds   =   new   DataSet();                          da.Fill(ds);                          return   ds;              }              #endregion                #region//下拉列表绑定              public   void   DropBind(DropDownList   ddl)              {                          this.conString();                          ListItem   lq   =   new   ListItem( "全部 ", "0 ");                          ddl.Items.Add(lq);                          string   sql   =    "select   DISTINCT   state   from   authors ";                          com   =   new   SqlCommand(sql,con);                          con.Open();                          dr   =   com.ExecuteReader();                          while   (dr.Read())                          {                                      ListItem   li   =   new   ListItem();                                      li.Text   =   dr[ "state "].ToString();                                      li.Value   =   dr[ "state "].ToString();                                      ddl.Items.Add(li);                          }                          dr.Close();                          con.Close();              }              #endregion                #region//绑定GridView方法              public   void   Bind()              {                          this.conString();                          string   sql   =    "select   *   from   authors ";                          DataSet   dsbind   =   this.GetData(sql);                          this.GridView1.DataSource   =   dsbind;                          this.GridView1.DataBind();              }              #endregion                /***********************************选择及分页事件********************************************/                #region//GridView选择事件              protected   void   GridView1_SelectedIndexChanged(object   sender,   EventArgs   e)              {                          this.lblkey.Text   =   this.GridView1.SelectedRow.Cells[0].Text;                          /*如果选中的行分页后还会选中的是那一行(例如:如果第一页选中第一行,那么翻到第二页的话还是选中的第一行)                             *   下面方法解决此问题                             */                          Session[ "pageIndex "]=this.GridView1.PageIndex;                          Session[ "pageRow "]   =   this.GridView1.SelectedIndex;              }              #endregion                #region//GridView分页事件              protected   void   GridView1_PageIndexChanging(object   sender,   GridViewPageEventArgs   e)              {                          /*如果选中的行分页后还会选中的是那一行(例如:如果第一页选中第一行,那么翻到第二页的话还是选中的第一行)                             *   下面方法解决此问题                             */                          int   pageIndex   =   e.NewPageIndex;//得到当前页索引                          if   (pageIndex   ==   Convert.ToInt32(Session[ "pageIndex "]))                          {                                      GridView1.SelectedIndex   =   Convert.ToInt32(Session[ "pageRow "]);                          }                          else                          {                                        GridView1.SelectedIndex   =   -1;                          }                          this.GridView1.PageIndex   =   e.NewPageIndex;                          this.Bind();              }              #endregion                /************************************条件查询,GridView行绑定事件******************************/                #region//条件查询              protected   void   droptj_SelectedIndexChanged(object   sender,   EventArgs   e)              {                          if   (this.droptj.SelectedIndex   ==   0)//选择全部                          {                                      string   sql   =    "select   *   from   authors ";                                      DataSet   ds   =   this.GetData(sql);                                      this.GridView1.DataSource   =   ds;                                      this.GridView1.DataBind();                          }                          else//有条件选择                          {                                      string   sql   =    "select   *   from   authors   where   state= ' "   +   this.droptj.SelectedItem.Text   +    " ' ";                                      DataSet   ds   =   this.GetData(sql);                                      this.GridView1.DataSource   =   ds;                                      this.GridView1.DataBind();                          }              }              #endregion                #region//行绑定事件              protected   void   GridView1_RowDataBound(object   sender,   GridViewRowEventArgs   e)              {                          //鼠标略过行改变行颜色                          e.Row.Attributes.Add( "onmouseover ", "c=style.backgroundColor;style.backgroundColor= 'skyblue '; ");                          e.Row.Attributes.Add( "onmouseout ", "style.backgroundColor=c ");                            //state列如果有值等于 "KS ",则把这行的颜色改变成黄色                          for   (int   i   =   0;   i    <   this.GridView1.Rows.Count;   i++)                          {                                      string   lblstr   =    " ";                                      lblstr   =   Convert.ToString(DataBinder.Eval(e.Row.DataItem,    "state "));                                      if   (lblstr   ==    "KS ")                                      {                                                  e.Row.BackColor   =   Color.Yellow;                                      }                          }              }              #endregion                /***************************************GridView排序*****************************************/                #region//排序事件              protected   void   GridView1_Sorting(object   sender,   GridViewSortEventArgs   e)              {                          string   dvsql   =    " ";                            if   (real   ==    "ASC ")                          {                                      real   =    "DESC ";                                      dvsql   =    "select   *   from   authors   order   by    "   +   e.SortExpression   +    "    "   +   real;                          }                          else                          {                                      real   =    "ASC ";                                      dvsql   =    "select   *   from   authors   order   by    "   +   e.SortExpression   +    "    "   +   real;                          }                          DataSet   ds=this.GetData(dvsql);                            GridView1.DataSource   =   ds;                          GridView1.DataBind();              }              #endregion   /***************************************GridView编辑列事件************************************/                #region//展开编辑列事件              protected   void   GridView1_RowEditing(object   sender,   GridViewEditEventArgs   e)              {                          this.GridView1.EditIndex   =   (int)e.NewEditIndex;                          this.Bind();              }              #endregion                #region//更新展开编辑列事件              protected   void   GridView1_RowUpdating(object   sender,   GridViewUpdateEventArgs   e)              {                          string   nameStr   =    " ";                          string   addressStr   =    " ";                          string   cityStr   =    " ";                          string   stateStr   =    " ";                          string   zipStr   =    " ";                            string   updateStr   =    "update   authors   set   au_lname=@name,address=@address,city=@city,state=@state,zip=@zip   where   au_id=@id ";                          this.conString();                          com   =   new   SqlCommand(updateStr,con);                          com.Parameters.Add( "@name ",System.Data.SqlDbType.VarChar,40);                          com.Parameters.Add( "@address ",System.Data.SqlDbType.VarChar,40);                          com.Parameters.Add( "@city ",System.Data.SqlDbType.VarChar,20);                          com.Parameters.Add( "@state ",System.Data.SqlDbType.Char,2)            ;                          com.Parameters.Add( "@zip ",System.Data.SqlDbType.Char,5);                          com.Parameters.Add( "@id ",System.Data.SqlDbType.Int,4);                                                    GridViewRow   gvRow   =   this.GridView1.Rows[e.RowIndex];//建立GridView行对象                          TextBox   nametxt   =   (TextBox)gvRow.Controls[1].Controls[0];                          TextBox   addresstxt   =   (TextBox)gvRow.Controls[2].Controls[0];                          TextBox   citytxt   =   (TextBox)gvRow.Controls[3].Controls[0];                          TextBox   statetxt   =   (TextBox)gvRow.Controls[4].Controls[0];                          TextBox   ziptxt   =   (TextBox)gvRow.Controls[5].Controls[0];                            nameStr   =   nametxt.Text;                          addressStr   =   addresstxt.Text;                          cityStr   =   citytxt.Text;                          stateStr   =   statetxt.Text;                          zipStr   =   ziptxt.Text;                            string   ValStr   =   this.ValUpdate(nameStr,addressStr,cityStr,stateStr,zipStr);                            if   (ValStr   ==    "ok ")                          {                                      com.Parameters[ "@id "].Value   =   this.GridView1.DataKeys[(int)e.RowIndex].Value.ToString();                                      com.Parameters[ "@name "].Value   =   nameStr;                                      com.Parameters[ "@address "].Value   =   addressStr;                                      com.Parameters[ "@city "].Value   =   cityStr;                                      com.Parameters[ "@state "].Value   =   stateStr;                                      com.Parameters[ "@zip "].Value   =   zipStr;                                        try                                      {                                                  con.Open();                                                  com.ExecuteNonQuery();                                                  this.Label3.Text   =    "更新成功! ";                                                  con.Close();                                      }                                      catch   (Exception   ex)                                      {                                                  this.Label3.Text   =    "无法更新! "   +   ex.Message;                                      }                                      finally                                      {                                                  this.GridView1.EditIndex   =   -1;                                                  this.Bind();                                      }                          }                          else                          {                                      this.Label3.Text   =   ValStr;                          }              }              #endregion                #region//取消展开编辑列事件              protected   void   GridView1_RowCancelingEdit(object   sender,   GridViewCancelEditEventArgs   e)              {                          this.GridView1.EditIndex   =   -1;                          this.Bind();              }              #endregion                #region//GridView更新时验证方法              public   string   ValUpdate(string   name,string   address,string   city,string   state,string   zip)              {                          string   ok   =    " ";                          if   (name   ==    " "   ||   address   ==    " "   ||   city   ==    " "   ||   state   ==    " "   ||   zip   ==    " ")//   &&   )                          {                                      ok   +=    "不能有空值    ";                          }                          else   if   (state.Length   >    2)                          {                                      ok   +=    "洲的长度不能大于2    ";                          }                          else   if   (zip.Length   !=   5)                          {                                      ok   +=    "邮编的长度必须等于5位 ";                          }                          else                          {                                      ok   =    "ok ";                          }                            return   ok;              }              #endregion                protected   void   GridView1_RowCommand(object   sender,   GridViewCommandEventArgs   e)              {                          //单选删除例子                          CheckBox   chk;                          if   (e.CommandName   ==    "del ")                          {                                      foreach   (GridViewRow   dvr   in   GridView1.Rows)                                      {                                                  chk   =   (CheckBox)dvr.FindControl( "CheckBox1 ");                                                  if   (chk.Checked)                                                  {                                                              string   id   =   e.CommandArgument.ToString();//前台把主键值绑定在按钮上                                                              string   id1   =   dvr.Cells[1].Text;//通过页面上的绑定列取得主键                                                              //通过GridView的DataKeys集合取得主键                                                              string   id2   =   GridView1.DataKeys[(int)dvr.RowIndex].Value.ToString();                                                  }                                      }                          }              }              //批量删除例子              protected   void   alldelbtn_Click(object   sender,   EventArgs   e)              {                          CheckBox   chk;                          foreach   (GridViewRow   gvr   in   GridView1.Rows)                          {                                      chk   =   (CheckBox)gvr.FindControl( "CheckBox1 ");                                      if   (chk.Checked)                                      {                                                  Button   btn=(Button)gvr.FindControl( "delbtn ");//借用单选删除按钮上绑定主键值                                                  string   id   =   btn.CommandArgument.ToString();                                                  string   id1   =   gvr.Cells[1].Text;//通过页面上的绑定列取得主键                                                  //通过GridView的DataKeys集合取得主键                                                  string   id2   =   GridView1.DataKeys[(int)gvr.RowIndex].Value.ToString();                                      }                          }              }


    最新回复(0)