基于权限对GridView进行编辑警报

时间:2014-06-11 11:20:50

标签: c# javascript asp.net gridview

我有一个带有编辑选项的gridview,可以编辑gridview行。我的Web应用程序中还有不同的用户权限,例如Admin,SuperUser,User。如果用户不是Admin并且他尝试编辑一行,我需要提供如下所示的警报。但是我在下面使用的js将为所有用户提供警报,因为没有设置验证。

MY TY SO FAR

GridView的:

<ItemTemplate>
    <asp:ImageButton ID="btnEdit" OnClientClick="myFunction()" runat="server" CommandName="Edit" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" ImageUrl="~/Images/Edit.gif" />
</ItemTemplate>

使用Javascript:

function myFunction() {
        var edit;
        if (confirm("For ADMIN only. Do not edit/delete the row. Still want to continue?") == true) {
        }
        else {
            window.location.reload();
        }
        document.getElementById("btnEdit").innerHTML = edit;
    }     

捕获当前登录用户:

此外,我使用以下代码捕获了同一页面中的当前登录用户。当前登录的用户信息保存在标签中。

protected void Page_Load(object sender, EventArgs e)
{
    checkUser();
}

public void checkUser()
{
    string currentUser = HttpContext.Current.Request.LogonUserIdentity.Name;
    string[] words = currentUser.Split('\\');
    currentUser = words[1];
    DataSet ds = new DataSet();
    using (SqlConnection conn = new SqlConnection(strcon))
    {
        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        string strQuery = "select UserId from Permissions where UserId='" +  currentUser + "'";
        SqlCommand cmd = new SqlCommand(strQuery, conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds);
    }
    lblUser.Text = ds.Tables[0].Rows[0]["UserName"].ToString();
}

Permissions表中,我有一个名为Roles的列,我需要检查用户是否不是管理员,需要发出警报。真的很感激任何建议或帮助。

3 个答案:

答案 0 :(得分:0)

试试这种方式

脚本为

     <script language="javascript" type="text/javascript">
      function myFunction() {
          var edit = confirm("For ADMIN only. Do not edit/delete the row. Still want to continue?");
          if (edit) {
              return true;
          }
          else {
              return false;
          }
       } 
      </script>

函数调用为OnClientClick =“return myFunction();”

答案 1 :(得分:0)

你可以这样做。

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == System.Web.UI.WebControls.DataControlRowType.DataRow)
  {
    Button btnEdit = e.Row.FindControl("btnEdit") as Button;
    if(lblUser.Text !="Admin")
      btnEdit.OnClientClick = "alert('Not allowed');return false;";
  }
}

如果您想使用您的功能,您可以进行如下更改:

 btnEdit.OnClientClick = "return myFunction()";

答案 2 :(得分:0)

你为什么不在服务器方面做?进入编辑功能后,请检查权限。这样一来,“智能”用户仍然无法编辑,因为他绕过了客户端检查。