Gridview控件使用详解

来源:互联网 发布:轩辕剑炼妖壶进阶数据 编辑:程序博客网 时间:2024/05/21 17:12

//一加载就填充Gridview控件
    public void Bin()
    {
        string strsql = "select id,title,context,datet From db_guanggao";
        com = new SqlCommand(strsql, con);
        com.CommandType = CommandType.Text;
        da = new SqlDataAdapter();
        da.SelectCommand = com;
        ds = new DataSet();
        try
        {
            da.Fill(ds, "table");
            GridView1.DataSource = ds;
            GridView1.AllowPaging = true;//启动分页
            GridView1.DataBind();
            string info = "页次:<font color=red>";
            info += (this.GridView1.PageIndex + 1) + "</font>/" + this.GridView1.PageCount + "页";
            this.Label1.Text = info;//当前页/总页如:1/5的形式显示
            //记算dataset的初始值
            //计算数据集的下标,数据集的下标也是从0开始的,PageIndex * 2是每页显示2条数据,PageIndex下标也是从0开始的
            int yeshu = this.GridView1.PageIndex * 2;//2是每页要显示的数量是可以随便改的
            //记算最后一个值
            int jie = 0;
            if ((ds.Tables[0].Rows.Count - yeshu) > 2)
            {
                jie = yeshu + 2;
            }
            else
            {
                jie = ds.Tables[0].Rows.Count;//读出数据的总行数
            }
            for (int wu = yeshu; wu < jie; wu++)
            {
                int i = 0;
                if (wu >= 2)
                {
                    int tempNew = wu % 2;
                    i = tempNew;
                }
                else
                {
                    i = wu;
                }
            }
            this.DropDownList1.Items.Clear();
            for (int j = 0; j < this.GridView1.PageCount; j++)
            {
                this.DropDownList1.Items.Add(Convert.ToString(j + 1));
            }
        }
        catch (SqlException ex)
        {
            myLabel.Text = "数据库出错了";
        }
        finally
        {
            ds.Clone();
            com.Clone();
            con.Close();
        }
//下面是把GvridView控件的分页事件,删除事件已经更新事件

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.GridView1.PageIndex = e.NewPageIndex;
        this.Bin();
    }

    protected void Button1_Click(object sender, EventArgs e)//跳到某一页的button事件
    {
        if (DropDownList1.Items.Count != 0)
        {
            string class1 = this.DropDownList1.SelectedValue.ToString();
            GridView1.PageIndex = Convert.ToInt32(class1)-1;
            this.Bin();
        }
    }
//删除事件
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string del = "delete from db_fclass where classname='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";
        com = new SqlCommand(del,con);
        try
        {
            con.Open();
            if (com.ExecuteNonQuery() > 0)
            {
                myLabel.Text = "删除成功!";
                Bin();
            }
            else
            {
                myLabel.Text = "删除失败!";
            }
        }
        catch (SqlException ex)
        {
            myLabel.Text = "数据库失败!" + ex.Message;
        }
        finally
        {
            com.Clone();
            con.Close();
        }
    }
//更新事件
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string up_str = Convert.ToString(GridView1.DataKeys[e.RowIndex].Value.ToString().Trim());
        string classm = Convert.ToString(GridView1.Rows[e.RowIndex].Cells[0].Text.ToString().Trim());
        if (up_str.Equals(classm))
        {
            myLabel.Text = "没有更改名字";
        }else{
            string up_class = "update db_fclass set classname='"
                              + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim() + "' where classname='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";
            com = new SqlCommand(up_class, con);
            try
            {
                con.Open();
                if (com.ExecuteNonQuery() > 0)
                {
                    GridView1.EditIndex = -1;
                    myLabel.Text = "更新成功!";
                    Bin();
                }
                else
                {
                    myLabel.Text = "更新失败!";
                }
            }
            catch (SqlException ex)
            {
                myLabel.Text = "数据库错误" + ex.Message;
            }
            finally
            {
                com.Clone();
                con.Close();
            }
        }
    }
//和更新事件一起用的事件,这是必须的
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        this.Bin();
    }
//和更新事件一起用的事件,这是必须的
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        this.Bin();
    }
    }
//用选择按钮激发事件做更新数据
 protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        con.Open();
        SqlTransaction stran = con.BeginTransaction();//用到事物
        string up_str = "update db_Theme set CurrenShow=0";
        com = new SqlCommand(up_str, con,stran);
        try
        {
            if (com.ExecuteNonQuery() > 0)
            {
                com.CommandText = "update db_Theme set CurrenShow=1 where id="
                      + GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
                if (com.ExecuteNonQuery() > 0)
                {
                    Page.RegisterStartupScript("key", "<script>alert('指定成功!');</script>");
                }
                else
                {
                    Page.RegisterStartupScript("key", "<script>alert('指定失败!');</script>");
                }
            }
            stran.Commit();//提交事务
        }
        catch (SqlException ex)
        {
            stran.Rollback();//回滚事务
            Response.Write("数据库错误!" + ex.Message);
        }
        finally
        {
            com.Clone();
            con.Close();
        }
    }
 /// <summary>
    /// 用GRIDVIEW中的选择按钮进行参看用户上传的文件然后更新
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        string f_name=GridView1.Rows[e.NewSelectedIndex].Cells[2].Text.ToString();//得到要查看的文件名
        Response.Redirect("../second/file_sc/"+f_name,false);//跳转查看此文件
        //GridView1.DataKeys[e.NewSelectedIndex].Value.ToString()是得到ID值进行更新
        //查看后更新
        string up_sql = "update ja_file_sc set f_zt=1 where id="+GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
        if (objsql.RunSql(up_sql))
        {
            sel_c();//更新后刷新GRIDVIEW
        }
    }
//CheckBox多选框在Gridview中的使用,这里是被选中的删除
protected void LinkButton1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            //下面是用FindControl("CheckBox1");得到制定控件的ID值,
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (cbox.Checked == true)
            {
        string id=GridView1.DataKeys[i].Value.ToString();
        con = new SqlConnection(ConfigurationManager.ConnectionStrings["dns"].ConnectionString);
        string delete_str = "delete grbg_dzyj_postmail from where id=@id";
        com = new SqlCommand(delete_str, con);
        com.Parameters.Add("@id", SqlDbType.Int);
        com.Parameters["@id"].Value = id;
         con.open();
          com.com.ExecuteNonQuery();
         con.clone();
            }
        }
        Bin();//重新绑定Grideview保持数据更新
    }
//在grideview头模板中添加一个CheckBox当选中的时候下面表中的CheckBox全选
 protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {

        CheckBox cbox_1 = (CheckBox)GridView1.HeaderRow.FindControl("CheckBox1");//("CheckBox1");//得到grideview头中的CheckBox控件
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox3");
            if (cbox_1.Checked == true)
            {
                cbox.Checked = true;
            }
            else
            {
                cbox.Checked = false;
            }
        }
    }