现在的位置: 首页 > 综合 > 正文

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

2012年07月29日 ⁄ 综合 ⁄ 共 14698字 ⁄ 字号 评论关闭

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();
                                     }
                         }
             }

抱歉!评论已关闭.