Click here to Skip to main content
15,908,768 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
how to disable the menu item from Menu Control for particular user in asp.net using c#...as i had declared session variable in LogIn.aspx page as follows where LogIn Page is my starting Page.. and in Master Page i wrote some condition which is mention below this code...

LogIn.aspx.cs

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

public partial class LogIn : System.Web.UI.Page
{
    SqlCommand cmd;
    SqlConnection sqlconn;
    SqlDataAdapter da;
    DataSet ds;

    MasterPage p1 = new MasterPage();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            try
            {

                sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["ODC"].ConnectionString.ToString());
                sqlconn.Open();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
            finally
            {
                sqlconn.Close();
            }
        }


    }
    protected void btnsubmit_Click1(object sender, EventArgs e)
    {
        int i = 0;


        try
        {
            sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["ODC"].ConnectionString.ToString());
            sqlconn.Open();
            SqlDataAdapter da = new SqlDataAdapter("Select Eid,Designation from Emp_Master where Eid='" + logdll.SelectedItem.Value + "' and Password='" + txtpswd.Text + "'", sqlconn);
            ds = new DataSet();
            da.Fill(ds);
            if (ds.Tables[0].Rows.Count > 0)
            {
                string utype = ds.Tables[0].Rows[0][1].ToString();
                Response.Write("<script language='javascript'>alert('hello')</script>");
                switch (utype)
                {

                    case "Admin":
                        utype = logdll.SelectedItem.Text;
                        Session["Eid"] = logdll.SelectedItem.Value;
                        Session["abcd"] = "admin";
                        Response.Redirect("AdminHomePage.aspx");
                       
                        break;
                    case "PM":
                        utype = logdll.SelectedItem.Text;
                        Session["Eid"] = logdll.SelectedItem.Value;
                        Session["abcd"] = "PM";
                        Response.Redirect("Project_Details.aspx");
                        break;
                    case "Emp":
                        utype = logdll.SelectedItem.Text;
                        Session["Eid"] = logdll.SelectedItem.Value;
                        Session["abcd"] = "Emp";
                        Response.Redirect("Work_Master.aspx");
                        break;
                    default:
                        Label11.Visible = true;
                        Label11.Text = " Invalid Password! Please retype the Password";
                        Session["abcd"] = "def";
                        break;

                        
                }



                Response.Write("<script language='javascript'>alert('User Login successful !')</script>");

            }
            else
            {
                Response.Write("<script language='javascript'>alert('Please enter valid Eid and Password')</script>");
                i = 1 + 1;
                if (i == 4)
                {
                    Response.Write("<script language='javascript'>alert('Try again')</script>");
                }
                else
                {
                    logdll.SelectedItem.Value = logdll.SelectedItem.Text;
                    txtpswd.Text = "";

                }
            }


        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        finally
        {
            sqlconn.Close();
        }

    }
}

MasterPage.aspx.cs
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class MasterPage : System.Web.UI.MasterPage
{

    protected void Page_Load(object sender, EventArgs e)
    {
        var menu = Page.Master.FindControl("Menu1") as Menu;

        if (!IsPostBack)
        {

            if (Session["abcd"]== null)
            {
                //menu.Items.Remove(menu.FindItem("Reports"));
                //menu.Items.Remove(menu.FindItem("Master"));
            }
            else if(Session["abcd"]=="admin")
            {
                menu.Items.Remove(menu.FindItem("Employee"));
                menu.Items.Remove(menu.FindItem("Reports"));
            }
          /*  MenuItemCollection menuItems = Menu1.Items;
            MenuItem menuItem = new MenuItem();
            foreach (MenuItem item in menuItems)
            {
                if (item.Text == "Home")
                    menuItem = item;
            }
            menuItems.Remove(menuItem);*/
        }
    }
}


but it is doesn't work out...plz let me know what changes i sholud made in the Master Page....


[Edit member="Tadit"]
Added pre tags.
[/Edit]
Posted
v3

When you click on a Button, Page Loads. But you have written those codes in IsPostBack in Master Page. Don't have the code inside IsPostBack and test.

Put debuggers while testing to know how the events cycles.
 
Share this answer
 
Comments
Member 10584788 1-Apr-14 2:15am    
MasterPage.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class MasterPageSample : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
var menu = Page.Master.FindControl("Menu1") as Menu;


if (Session["abcd"] == null)
{
//menu.Items.Remove(menu.FindItem("Reports"));
//menu.Items.Remove(menu.FindItem("Master"));
}
else if ((Session["abcd"].ToString().Equals("admin")))
{
menu.Items.Remove(menu.FindItem("Project Manager"));
menu.Items.Remove(menu.FindItem("Employee"));
menu.Items.Remove(menu.FindItem("Reports"));
}

}


}


Now i had made changes and i found error as ArgumentNullException at this line

menu.Items.Remove(menu.FindItem("Project Manager"));

what will be the solution...
That means the "Project Manager" menu is null/not present.

Are you sure it is present? Also, before doing any operation, check for null like below...

else if ((Session["abcd"].ToString().Equals("admin")))
{
if(menu != null)
{
if(menu.FindItem("Project Manager") != null)
{
menu.Items.Remove(menu.FindItem("Project Manager"));
}

// Other deletion codes...
}
}
Member 10584788 1-Apr-14 3:21am    
thank u so much...........i can't explain in words but again thank u.......it's working fine...
Most welcome, anytime. :)

Glad to hear that it helped. :)
Member 10584788 1-Apr-14 3:31am    
hmmm.......:):):)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900