项目问题---GridView的使用

不做不知道,一做全是错。

不用gridView控件已经有2年了。脑海中依稀只是记得自能绑定数据源后能实现自动分页 排序等功能。

 

这次自己做的这个项目看来眼高手低的问题体现出了。

--------------------------------

实现功能:用gridView显示所有注册的用户信息

数据库表Users中有多列,此处只是想显示UserId,User_Name,Role_Name三列。

此处对于gridview的绑定自己全部用自定义模板实现代码绑定。于是绑定后认为会自动实现排序等功能结果不能

上网查找资料有这么句话提醒了我:【gridview如果使用sqldatasource绑定数据集的话分页只需将gridview 属性设置为 AllowSorting="True" 即可,但是如果采用其它数据源绑定属性 AutoGenerateColumns  如果设置为false 那么上面的排序方法则行不通。必须自定义排序。】

 于是只能自己写代码了。

-----------------自定义排序事件------------------------

具体如下:Load事件

 protected void Page_Load(object sender, EventArgs e)
    {

        user_bll = new User_Bll();
   
        if (!IsPostBack)
        {
            ViewState["SortOrder"] = "User_Id";
            ViewState["OrderDire"] = "DESC";

            BindUsersData();
        }
    }

绑定数据源方法:

    private void BindUsersData()
    {
        string sort = (string)ViewState["SortOrder"] + " " + ViewState["OrderDire"];
        DataView dv = user_bll.GetAllUsers().DefaultView;
        dv.Sort = sort;

        this.GridView1.DataSource = dv;
        this.GridView1.DataBind();
    }

 

  排序事件:
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        string sPage = e.SortExpression;
        if (ViewState["SortOrder"].ToString() == sPage)
        {
            if (ViewState["OrderDire"].ToString() == "DESC")
                ViewState["OrderDire"] = "ASC";
            else
                ViewState["OrderDire"] = "DESC";
        }
        else
        {
            ViewState["SortOrder"] = e.SortExpression;
        }

        BindUsersData();

    }

--------------自定义排序事件---------------------------------------------

 

--------------自定义分页事件-----------------------------------------------


    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {

        GridView1.PageIndex = e.NewPageIndex;

        this.Label1.Text = (e.NewPageIndex + 1).ToString();

        BindUsersData();
    }

--------------自定义分页事件-----------------------------------------------

 

--------------自定义删除事件-----------------------------------------------

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        ImageButton deletBtn = (ImageButton)e.Row.FindControl("deleteBtn");

        if (deletBtn != null)
        {
            deletBtn.Attributes.Add("onclick","return confirm('Are you sue to Delete?');");
        }

    }

 


    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "delete")
        {
            string deleteUserId =  e.CommandArgument.ToString();
            user_bll.deleteUser(deleteUserId);

            BindUsersData();
        }

    }

前台:


        <asp:TemplateField HeaderText ="操作">
            <ItemTemplate>
            <a href='EditUser.apsx?UserId=<%#DataBinder.Eval(Container.DataItem,"User_Id")%>'> 修改</a>
            <asp:ImageButton id="deleteBtn" AlternateText="删除"  runat ="server" CommandName ="delete" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"User_Id") %>'/>
            </ItemTemplate>
        </asp:TemplateField>

--------------自定义删除事件-----------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值