如何在asp.net中为网格中的项模板设置enable=false

本文关键字:设置 enable false 网格 asp net | 更新日期: 2023-09-27 18:09:58

我想根据角色设置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>

我正在为网格做数据绑定

如何在asp.net中为网格中的项模板设置enable=false

可以处理RowDataBound Grid的事件

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 && role == "something")
           {
               //Do your logic here
           }
       }
  }

这样处理GridView上的RowDataBound事件:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    var btn = e.Row.FindControl("imgbtn") as Button;
    btn.Enabled = role == "something";
}

也许你可以在ASPX标记中使用数据绑定表达式:

<asp:ImageButton ID="imgbtn" Enabled='<%# role == "something" %>' ... />

如果您希望根据角色启用或禁用页面上的一个或多个控件,则可以在页面/控件中创建一个公共属性,如下所示:

public bool BelongsToRoleA { get; set; }

根据角色

设置其值
If(role==”something”)
{
    BelongsToRoleA = true;
}else
{
    BelongsToRoleA = false;
}

然后在你的标记中引用它,像这样:

<asp:ImageButton ID="imgbtn" Enabled='<%# BelongsToRoleA %>' ...

你也可以这样做:-

设置在你的。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>