#c# #asp.net #datagrid
#c# #asp.net #datagrid
Вопрос:
Я хочу установить enable = false
в соответствии с ролью
У меня есть if
инструкция для проверки роли
page load() {
if(role == "something")
{
// I want to set imgbtn.enabled = false;
}
}
Как это сделать.
<Columns><asp:TemplateField HeaderText="Edit Controls" ItemStyle-Width="15%">
<ItemTemplate>
<asp:ImageButton ID="imgbtn" ImageUrl="Styles/Images/Edit.jpg" runat="server" OnClick="imgbtn_GroupEditClick" ToolTip="Edit Group" />
<asp:ImageButton ID="img_Send" ImageUrl="Styles/Images/Message.jpg" Enabled="True"
runat="server" PostBackUrl='<%# Eval("GroupName", "SendMessage.aspx?GroupName={0}") %>'
ToolTip="Create Message"></asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="GroupID" ItemStyle-Width="0%" HeaderText="GroupID" />
<asp:BoundField DataField="GroupName" ItemStyle-Width="20%" HeaderText="GroupName" />
</columns>
Я делаю привязку данных для сетки
Комментарии:
1. Я также использовал теги gator, чтобы сообщить javascript (или jquery) о запуске… Таким образом, вместо обхода datagridview в поисках типов в шаблоне элемента, это просто $(‘#imgbtn’).attr(‘enabled’,’false’);
Ответ №1:
Вы можете обрабатывать RowDataBound
событие сетки
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Or you can use e.Row.Cells[0].FindControl("ur control id");
foreach (object c in e.Row.Cells[0].Controls)
{
ImageButton btn = c as ImageButton;
if (c != null amp;amp; role == "something")
{
//Do your logic here
}
}
}
Ответ №2:
Обработайте событие RowDataBound в GridView следующим образом:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
var btn = e.Row.FindControl("imgbtn") as Button;
btn.Enabled = role == "something";
}
Ответ №3:
Может быть, вы можете использовать выражение привязки данных и сделать это в разметке ASPX:
<asp:ImageButton ID="imgbtn" Enabled='<%# role == "something" %>' ... />
Ответ №4:
Если у вас есть один или несколько элементов управления на странице, которые вы хотите включить или отключить в зависимости от роли, вы можете создать общедоступное свойство на своей странице / элементе управления следующим образом:
public bool BelongsToRoleA { get; set; }
Установите его значение на основе роли
If(role==”something”)
{
BelongsToRoleA = true;
}else
{
BelongsToRoleA = false;
}
А затем ссылаться на него в своей разметке следующим образом:
<asp:ImageButton ID="imgbtn" Enabled='<%# BelongsToRoleA %>' ...
Ответ №5:
Вы также можете сделать так:-
установите на вашей странице .aspx.cs
public string role { set; get; }
и в части дизайна замените свой код на это
<Columns>
<asp:TemplateField HeaderText="Edit Controls" ItemStyle-Width="15%">
<ItemTemplate>
<%if (role == "Something")
{ %>
<asp:ImageButton ID="imgbtn" ImageUrl="Styles/Images/Edit.jpg" runat="server" OnClick="imgbtn_GroupEditClick"
ToolTip="Edit Group" Enabled="false" />
<%}
else
{ %>
<asp:ImageButton ID="ImageButton1" ImageUrl="Styles/Images/Edit.jpg" runat="server" OnClick="imgbtn_GroupEditClick"
ToolTip="Edit Group" Enabled="true" />
<%} %>
<asp:ImageButton ID="img_Send" ImageUrl="Styles/Images/Message.jpg" Enabled="True"
runat="server" PostBackUrl='<%# Eval("GroupName", "SendMessage.aspx?GroupName={0}") %>'
ToolTip="Create Message"></asp:ImageButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="GroupID" ItemStyle-Width="0%" HeaderText="GroupID" />
<asp:BoundField DataField="GroupName" ItemStyle-Width="20%" HeaderText="GroupName" />
</Columns>