【问题标题】:How to set enable=false to a item template inside a grid in asp.net如何在asp.net中的网格内将enable = false设置为项目模板
【发布时间】:2011-09-29 13:41:52
【问题描述】:

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

我正在为网格做数据绑定

【问题讨论】:

  • 是的,我已经更新了问题
  • ILO 以您的方式执行此操作,我还使用 gator 标签来告诉 javascript(或 jquery)触发...所以不是遍历 datagridview 搜索项目模板中的类型,而是只需 $('#imgbtn').attr('enabled','false');

标签: c# asp.net datagrid


【解决方案1】:

你可以处理RowDataBoundGrid的事件

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
           }
       }
  }

【讨论】:

    【解决方案2】:

    像这样处理 GridView 上的 RowDataBound 事件:

    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>
          

          【讨论】:

            猜你喜欢
            • 2021-03-19
            • 2013-05-11
            • 1970-01-01
            • 1970-01-01
            • 2014-10-01
            • 1970-01-01
            • 2021-10-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多