GridView使用总结,包括更删改查/分页/特效,的对应事件

先来看一下这个整体的效果

主要用数据后台代码来实现功能:

第一步:设计 GridView

打开GridView的“编辑列“”,添加你要的列头,这里选择BoundField添加

其中该列字段DataField填数据库表对应的列,HeaderText为列名

可以转换成TemplateField,在页面就可以看到代码了

操作列用CommandField添加,也转换成TemplateField

选择要显示的功能,编辑,选择,取消,更新对应的字段设置为True

其中全选功能,打开编辑模板,右边选择该列HeaderTemplate列头设置一个CheckBox控件

然后再ItemTemplate也添加一个CheckBox控件,代表每个列都有该控件

(取消自动生成列 AutoGenerateColumns=false)

然后添加查询个对应控件

第二步:绑定数据

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {

         DateShowArticle(userId); //根据用户Id查询表

         }

public void DateShowArticle(int userId)   //绑定到GridView中
    {
        List<Article> artList = new ArticlesManager().DateShowArticle(userId);
        this.GridView1.DataSource = artList;
        this.GridView1.DataKeyNames = new string[] { "ArticlesId" };  //捕获主键
        this.GridView1.DataBind();
    }

读取数据是很简单的,下面主要操作更删改查:

第三步:更删改查/分页/特效,的对应事件

//特效,给控件添加放上去就变化背景颜色的效果(在数据绑定后激发)
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)  //是否加载了数据后
        {
            e.Row.Attributes.Add("onmouseover", "currentColor=this.style.backgroundColor;this.style.backgroundColor='#8187fe';fontColor=this.style.color;this.style.color='#fff';");
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentColor;this.style.color=fontColor;");

            //给自定义删除按钮添加提示,后面用到

            LinkButton delete = e.Row.FindControl("lblBtnDelete") as LinkButton;
            delete.Attributes.Add("onclick", "return confirm('确定删除吗?')");
           
        }
    }

 //分页(在属性中打开分页功能AllowPaging=true)
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.GridView1.PageIndex = e.NewPageIndex;//显示新的索引
        //调用母版页的控件的值
        int userId = Convert.ToInt32((this.Master.FindControl("lblUserId") as Label).Text);
        this.GridView1.DataSource = new ArticlesManager().DateShowArticle(userId);  //重新绑定数据
        this.GridView1.DataBind();
    }

 //选择,跳到修改页面
    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        int userId = Convert.ToInt32((this.Master.FindControl("lblUserId") as Label).Text);
        int index = e.NewSelectedIndex;
        int ArticlesId = Convert.ToInt32((this.GridView1.Rows[index].FindControl("artId") as Label).Text);
        Response.Redirect("AdminEdit.aspx?UserId=" + userId + "&ArticlesId=" + ArticlesId);
    }

//编辑(生成Edit事件时激发,点击编辑功能)

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
       
        int index = e.NewEditIndex;  //该列的索引
        int count = Convert.ToInt32((this.GridView1.Rows[index].FindControl("lbTypeId") as Label).Text);//得到原来的值
        this.GridView1.EditIndex = index;//设置编辑行的索引

//重新绑定数据
        int userId = Convert.ToInt32((this.Master.FindControl("lblUserId") as Label).Text);
        this.GridView1.DataSource = new ArticlesManager().DateShowArticle(userId);
        this.GridView1.DataBind();

//给编辑功能的复选框添加动态复选

        DropDownList drilist = this.GridView1.Rows[index].FindControl("DropDownList1") as DropDownList;
        drilist.DataSource=new ArticlesTypesManager().ArticlesTypeDateList();
        drilist.DataTextField = "TypeName";
        drilist.DataValueField = "TypeId";
        drilist.DataBind();
        drilist.Items.Insert(0,new ListItem("--全部--","0"));

        drilist.SelectedIndex = count;  //然后再自动选中该列编辑时的字段
    }

 //取消编辑
 
  protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        try
        {
            this.GridView1.EditIndex = -1;  //退出编辑状态

            int userId = Convert.ToInt32((this.Master.FindControl("lblUserId") as Label).Text);

            this.GridView1.DataSource = new ArticlesManager().DateShowArticle(userId);  //重新绑定数据
            this.GridView1.DataBind();
        }
        catch (Exception)
        {
            Response.Write("<script>alert('操作失败!')</script>");
            //Page.ClientScript.RegisterStartupScript(this.GetType(), "消息", "<script>alert('操作失败!')</script>");
            throw;
        }
    }

//删除
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int index = e.RowIndex;
        int ArticlesId = Convert.ToInt32((this.GridView1.Rows[index].FindControl("artId") as Label).Text); //得到第一行第一列

        if (new ArticlesManager().DeleteArticeById(ArticlesId) > 0)
        {
            Response.Write("<script>alert('删除成功!')</script>");
        }
        else
        {
            Response.Write("<script>alert('删除失败!')</script>");
        }

        int userId = Convert.ToInt32((this.Master.FindControl("lblUserId") as Label).Text);

        this.GridView1.DataSource = new ArticlesManager().DateShowArticle(userId);  //重新绑定数据
        this.GridView1.DataBind();

    }

 //更新
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        int index=  e.RowIndex;

        int ArticlesId = Convert.ToInt32((this.GridView1.Rows[index].FindControl("artId") as Label).Text);        
        string TextTitle = (this.GridView1.Rows[index].FindControl("TextTitle") as TextBox).Text.Trim();
        string TextUutline = (this.GridView1.Rows[index].FindControl("TextUutline") as TextBox).Text.Trim();
       // int TextSum = Convert.ToInt32((this.GridView1.Rows[index].FindControl("TextSum") as TextBox).Text.Trim());
        int selectTypeId = Convert.ToInt32((this.GridView1.Rows[index].FindControl("DropDownList1") as DropDownList).SelectedItem.Value);
        Article art = new Article();
        art.ArticlesId = ArticlesId;
        art.Title = TextTitle;
        art.Uutline = TextUutline;
       // art.ClickSum = TextSum;
        art.TypeId = selectTypeId;

        if (new ArticlesManager().UpdateArticlesById(art))
        {
            Response.Write("<script>alert('更新成功!')</script>");
        }
        else
        {
            Response.Write("<script>alert('更新失败!')</script>");
        }

        this.GridView1.EditIndex = -1;  //退出编辑状态
        int userId = Convert.ToInt32((this.Master.FindControl("lblUserId") as Label).Text);

        this.GridView1.DataSource = new ArticlesManager().DateShowArticle(userId);  //重新绑定数据
        this.GridView1.DataBind();


    }

 //选择,跳到修改页面
    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        int userId = Convert.ToInt32((this.Master.FindControl("lblUserId") as Label).Text);
        int index = e.NewSelectedIndex;
        int ArticlesId = Convert.ToInt32((this.GridView1.Rows[index].FindControl("artId") as Label).Text);
        Response.Redirect("AdminEdit.aspx?UserId=" + userId + "&ArticlesId=" + ArticlesId);
    }

以上时GridView自带的操作,下面来操作自定义删除,全选

//自定义删除(该事件时生成事件时激发,在前面的RowDataBound事件添加删除提示

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Del")
        {
            int ArticlesId = Convert.ToInt32(e.CommandArgument);
            if (new ArticlesManager().DeleteArticeById(ArticlesId) > 0)
            {
                Response.Write("<script>alert('删除成功,已保存!')</script>");

            }
            else
            {
                Response.Write("<script>alert('删除失败!')</script>");
            }
        }

        string SkinName = (this.Master.FindControl("lblSkinName") as Label).Text;
        this.Master.BgColor = SkinName;
    }

 //全选删除(自定义全选,点击添加的外部按钮事件)
    protected void BtnDelectAll_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < this.GridView1.Rows.Count; i++)
        {
            if ((this.GridView1.Rows[i].FindControl("CheckBox2") as CheckBox).Checked == true)
            {
               int artId = Convert.ToInt32((this.GridView1.Rows[i].FindControl("artId") as Label).Text);
               if (new ArticlesManager().DeleteArticeById(artId) > 0)
               {
                   Response.Write("<scirpt>alert('多选删除成功!')</script>");

               }
               else
               {
                   Response.Write("<script>alert('删除失败!')</script>");
               }
            }
        }
        int userId = Convert.ToInt32((this.Master.FindControl("lblUserId") as Label).Text);
        DateShowArticle(userId);  //刷新

    }

//全选,参数AutoPostBack="True".页面不刷新
    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chkAll = sender as CheckBox;
        for (int i = 0; i < this.GridView1.Rows.Count; i++)
        {
            (this.GridView1.Rows[i].FindControl("CheckBox2") as CheckBox).Checked = chkAll.Checked;       
        }
        string SkinName = (this.Master.FindControl("lblSkinName") as Label).Text;
        this.Master.BgColor = SkinName;
    }

以上基本的功能已经做好了,下面在外部添加查询

第四步:查询

//查询
    protected void btnfind_Click(object sender, EventArgs e)
    {
        string title = this.TextTitle.Text.Trim();
        int typeId = Convert.ToInt32(this.ddListFind.SelectedItem.Value); 
        this.GridView1.DataSource = new ArticlesManager().SelectLikeByTitle(typeId,title);
        this.GridView1.DataBind();
    }

完成,上面就是对于GridView的基本功能

来都来了,点个赞在走吧!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值