我有一个网格视图。我添加了AutoGenerateEditButton=True
。
我想向属于某个角色的用户显示该按钮。如果不是,则不呈现按钮。
你推荐什么?为实现这一目的,我必须处理哪个事件?
我是否必须使用模板驱动的控件,例如ListView?
解决方案:
<Columns>
<asp:CommandField
ShowEditButton="True" />
<asp:BoundField
DataField="Id"
ReadOnly="true"
Visible="true" />
<asp:BoundField
DataField="Title"
HeaderText="Title" />
</Columns>
GridView的Load事件:
if(!User.IsInRole("Manager"))
{
for (int i = 0; i < grdMovies.Columns.Count; i++)
{
if (grdMovies.Columns[i] is CommandField)
{
grdMovies.Columns[i].Visible = false;
}
}
}
答案 0 :(得分:3)
将ButtonField
与CommandName = Edit
一起使用。
您可以根据用户的角色隐藏Page_Load
函数中的列:
const int _editColumnIndex = 0;
void Page_Load(object sender, EventArgs e)
{
if(!User.IsInRole("Manager"))
grdMovies.Columns[_editColumnIndex].Visible = false;
}
答案 1 :(得分:0)
无论如何要考虑这个更正确的代码:
foreach (CommandField column in grdMovies.Columns.OfType<CommandField>)
{
column.Visible = false;
}