我有一个System.Data.DataTable,我绑定到GridView。如果用户没有某个安全角色,我想用“X”替换某些列中的数据。我可以不循环遍历所有行吗?
答案 0 :(得分:2)
实现GridView RowDataBound事件,如果用户的安全角色不合适,请在那里进行更改。
void CusomGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(User.Role != "Admin")
{
e.Row.Cells[1].Text = "X";
}
}
答案 1 :(得分:2)
严格来说,没有。您可以使用Linq样式的扩展方法来隐藏实现,但是过程语言中的任何代码都将涉及遍历行的迭代循环。甚至RowDataBound事件也会被每行迭代地触发;但是,无论如何它都会遍历行,所以至少你不会重复循环行为。
答案 2 :(得分:1)
您可以只使用第二列,并准备将其命名为“your column2” 填充x数据后,您可以根据管理员访问级别确定哪个列可见。
在VB.NET中,如果没有递归,则无法更改每行的值。
答案 3 :(得分:1)
您也可以在后端执行此操作。将userID或角色传递给sp,该sp仅返回可查看的列,并且为无法查看的列传递“X”值,并将UI绑定到该列。