GridView 中自带了 修改/删除功能,在每行的末尾,但是在“每一行”的末尾都会显示。怎样只在其中的一行显示呢?
比如,有一个选课系统,每个学生选课后都可以在 GridView 中查看自己的和别人的选课信息,如果 GridView 每行都显示修改/删除的话,那该学生也可以修改别人的数据了,明显是不可以的。初学者,还请多多指教。  :)

解决方案 »

  1.   

    介个
    查看自己的和别人的可以分两个页面或两个gridview吗。
    或者将别人的那行的删除修改的enable给设为false
    还有点击删除修改的时候先判断一下session和主键(学号)是不是对应起来
      

  2.   

    在RowDataBound事件中写:
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    if (e.Row.Cells[1].Text != "20103401")
    e.Row.Cells[0].Text = string.Empty;
    }
    以上假定:下标为0的列存放修改或删除按钮,下标为1的列存放学号,"20103401"可以来自Session["学号"]
      

  3.   


    进入GridView的设计器(不是vs属性窗体),将此列“改为模板列”。然后你就可以把这个模板列改到任何列位置,而不用放在最后。然后,你可以修改代码,例如<asp:Button raunat="server" Enable='<%# GetEnable((int)Eval("userId")) %>' ..... />protected bool GetEnable(int userId)
    {
        return 查询数据库判断是否可修改(userId);
    }界面上的事情就用界面上来设计,在asp.net控件的属性上绑定数据,就行了!
      

  4.   

    当然也不一定非要查询数据库。像“判断userId是否是当前登录用户的Id”这种事情其实就无需查询数据库了。
      

  5.   

    你可以根据不同用户查询到该用户的信息然后绑定到该控件上,不应该是在一个gridview里面显示的。。当然你硬是要这样做也行,那就在行绑定事件里根据用户id 来控制除该用户外的其他行的按钮均不可编辑或者隐藏