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