首页 > 解决方案 > 如何在asp.net c#中禁用基于特定值和特定用户角色的编​​辑按钮?

问题描述

我真的需要这个查询的帮助。一直在尝试,没有成功。这是场景和查询:

我有一个带有信息的表单,我想要完成的是根据特定的下拉列表(ItemStatus)值禁用编辑模式(Edit Link Button),即:当ItemStatus损坏时|| Discarded && UserRole not in (' Sys Admin ' || ' App Admin ') 用户不应该能够编辑表单。

尝试了它的第一个方面,即ItemStatus并且在单击Edit时仍然可以编辑表单。感谢帮助。

ASP:

<asp:TemplateField HeaderText="Item Status" SortExpression="ItemStatus">
   <EditItemTemplate>
      <asp:DropDownList ID="ItemStatusEd" runat="server" DataSourceID="ItemStatusEdDS" 
         DataTextField="ItemStatus" DataValueField=" ItemStatus" selectedvalue='<%# Bind("Status") %>' > 
      </asp:DropDownList>
      <asp:RequiredFieldValidator ID="StatusEdRFV" runat="server" ControlToValidate="ItemStatusEd" ErrorMessage="Item Statusis Required" ForeColor="Red" 
         ValidationGroup="RecEd">*</asp:RequiredFieldValidator>
   </EditItemTemplate>
   <InsertItemTemplate>
      <asp:DropDownList ID="ItemStatusIns" runat="server" DataSourceID="ItemStatusDS"
         DataTextField="ItemStatus" DataValueField="ItemStatus"
         selectedvalue='<%# Bind("Status") %>'  AppendDataBoundItems="true" Width="190px">
         <asp:ListItem Selected="True" Value="">Select Item Status</asp:ListItem>
      </asp:DropDownList>
      <asp:RequiredFieldValidator ID="StatusInsRFV" runat="server" ControlToValidate="StatusIns" 
         ErrorMessage="Item Status is Required" ForeColor="Red" ValidationGroup="RecIns">*</asp:RequiredFieldValidator>
   </InsertItemTemplate>
   <ItemTemplate>
      <asp:Label ID="Label6" runat="server" Text='<%# Bind("Status") %>'></asp:Label>
   </ItemTemplate>
</asp:TemplateField>
<asp:SqlDataSource ID="ItemStatusEdDS" runat="server" ConnectionString="<%$ ConnectionStrings:PMAConStr %>" 
   SelectCommand="select [ID], [ItemStatus] from [ItemStatusTbl] where ([Status] = 'A')">
</asp:SqlDataSource>

背后的代码(C#):

if (e.CommandName == "Edit")
{
    try
    {
        DropDownList ItemStatusEd = new DropDownList();
        StatusEd = (DropDownList)ItemInfoDet.FindControl("ItemStatusEd"); /* without these 2 lines of code here it will not find the control ItemStatusEd*/

        if (ItemStatusEd.SelectedValue == "Condemned/Scrapped" || ItemStatusEd.SelectedValue == "Written Off")
        {
            ItemStatusEd.Enabled = true;
        }
        else
        {
            ItemStatusEd.Enabled = false;
        }
    }
    catch (Exception exc)
    {
        lblMessage.Text = "<img src='../Stylesheet/images/warning.gif' alt='Error!' width='24' height='24' style='float: left; margin: -5px 10px 0px 0px; ' /> <span style='font-weight:bold;   color:Red;' >" + exc.Message + "</span> <br />";
        lblMessage.Visible = true;
    }
}

标签: c#asp.net

解决方案


推荐阅读