1

我有一个绑定到 GridView 的 System.Data.DataTable。如果用户没有特定的安全角色,我想用“X”替换某些列中的数据。我可以在不遍历所有行的情况下做到这一点吗?

4

4 回答 4

2

实现 GridView 的 RowDataBound 事件,如果用户的安全角色不足,则在其中进行更改。

  void CusomGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {
    if(User.Role != "Admin")
    {
      e.Row.Cells[1].Text = "X";

    }
  }
于 2010-09-16T20:20:20.893 回答
2

严格来说,没有。您可以使用 Linq 样式的扩展方法来隐藏实现,但是过程语言中的任何代码都将涉及遍历行的迭代循环。甚至 RowDataBound 事件也会被每一行迭代地触发;但是,无论如何它都在遍历行,所以至少你没有重复循环行为。

于 2010-09-16T20:22:34.273 回答
1

您可以简单地将第二列可用并准备好将其命名为“您的 column2”,其中填充了 x 数据,然后您可以根据管理员访问级别确定哪一列是可见的。

在 VB.NET 中,您不能在没有递归的情况下更改每一行的值。

于 2010-09-16T20:23:55.310 回答
1

您也可以在后端执行此操作。将用户 ID 或角色传递给一个 sp,它只返回可查看的列和他们看不到的列的“X”值,并将 UI 绑定到该值。

于 2010-09-16T20:30:36.940 回答