2016-09-09 4 views
0

j'ai vous connecter et Webform1.aspxvaleurs dans la liste déroulante en fonction des droits

valeurs dans la liste déroulante

**values** 
apples 
oranges 
grapes 
factory 
juices 
banana 
Grapes 

je veux quand je me connecte avec nom d'utilisateur admin et mot de passe, puis les valeurs dans la liste déroulante doit être usine où, comme et quand je me connecte avec un autre nom d'utilisateur alors les valeurs sont dans la liste déroulante mais pas la liste complète seulement quelques valeurs sont l'affichage où je veux toutes les valeurs, excepté l'usine

usine

i try this sp et ce sp fonctionne parfaitement

ALTER procedure [dbo].[list] 
as 
select fruits from tblReg 
where fruits <>'' and 
fruits not in ('Factory') 
and fruits not like '%[0-9]%' 
group by fruits 

et je convertir cette sp dans LINQ 2ème requête

sur le formulaire de connexion i ne ce bouton

clique

  try 
      { 
       loginmethod(txt_us.Text, txt_pwd.Text); 
       Response.Redirect("WebForm1.aspx"); 
       Session["UserName"] = txt_us.Text; 
      } 
      catch 
      { 
       Label1.Text = (""); 
       Label1.Visible = false; 
      } 

méthode de connexion

private bool loginmethod(string UserName, string Password) 
    { 

     Entities2 td = new Entities2(); 
     splogin_Result sp = td.splogin(UserName, Password).FirstOrDefault(); 
     if (sp.Password == txt_pwd.Text) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 

    } 

et à la page formulaire en ligne charge

protected void Page_Load(object sender, EventArgs e) 
     { 
      Entities2 tea = new Entities2(); 
      if (!Page.IsPostBack) 
      { 
       if ((Session["UserName"] as string) == "admin") 
       { 
     //1st query 

regiondrop.DataSource = tea.tblReg.Where(x => x.Fruits== "Factory") 
.Select(x => new { Fruits= x.Fruits, Value = x.Fruits}).Distinct() 
.ToList(); 

       } 
       else 
       { 
       //2nd query 

      regiondrop.DataSource = tea.tblReg.AsEnumerable() 
           .Where(x => x.Fruits.All(char.IsLetter) && 
           x.Fruits!= "" && 
           x.Fruits!= "Factory") 
         .Select(x => new { Fruits=x.Fruits, Value=x.Fruits}) 
         .Distinct().ToList();  
       } 
       regiondrop.DataTextField = "Fruits"; 
       regiondrop.DataValueField = "Fruits"; 
       regiondrop.DataBind(); 
       Label4.Visible = false; 

      } 

     } 
+0

Quel est le problème avec votre code? Il ne fonctionne pas ou vous n'obtenez pas la sortie souhaitée. –

+0

oui @A_Name_Does_Not_Matter – user6628729

+0

Quel est le problème? –

Répondre

0

Pourquoi ne mappez pas la table 'tblReg' avec le rôle d'utilisateur et passez session [ "UserName"] ou session [ "rôle"] en tant que paramètre à la SP et sélectionnez les valeurs et affichez-les dans ddl. Récupérez simplement les données en fonction du rôle.

Mise à jour

Maintenant, ajoutez un rôle de colonne (valeur = Admin ou utilisateur) dans tbllogin.

select role, UserName , Password from tbllogin where [email protected] and [email protected] 

Enregistrer le rôle dans la session (Session ["role"]).

maintenant également ajouter une colonne dans tblReg et plan d'accès avec le rôle Par exemple

RegId fruits  Role 
    1  Mango  user 
    2  Apple  Admin 
    3  banana  Admin 

Vous devez passer le paramètre sql de code derrière

ALTER procedure [dbo].[list] 
@role varchar(10) 
as 
select fruits from tblReg 
where role = @role 

lier Enfin dans le code sans vérifier à nouveau rôle.

+0

je crée simplement sp comme cette sélection UserName, mot de passe de tbllogin où UserName = @ username et password = @ Mot de passe – user6628729