Una vez llegada a esta parte, nuestro sistema ya nos exige un nombre de usuario y una contraseña. Lo que sigue ahora es que cuando iniciemos sesión, el sistema nos muestre las opciones a las que el usuario tiene acceso. Modificaremos el código HTML de la página mail.master y el código C# de la página main.master.cs
En la página main.master ubicamos el objeto lblOpciones el cual tiene el siguiente código:
<asp:Label ID="lblOpciones" runat="server" Text=""></asp:Label>Lo modificaremos para que quede:
<asp:Label ID="lblOpciones" runat="server" Text="{ventas}{reportes}{administrar}"></asp:Label>Le hemos agregado "{ventas}{reportes}{administrar}", haremos un Replace de código HTML como se muestra en seguida.
Ahora vamos al código C# del archivo main.master.cs y escribiremos el siguiente código:
void Permisos(string prmUSER_LOGIN){ try{ SqlConnection cnn = new SqlConnection(clsMain.CnnStr); cnn.Open(); SqlCommand cmd = new SqlCommand("EXECUTE [proc_USERS_PERMISOS_MOSTRAR]'" + prmUSER_LOGIN + "'", cnn); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()){ if (Convert.ToBoolean(dr["ADMINISTRAR"])){ lblOpciones.Text = lblOpciones.Text.Replace("{administrar}","administrar.aspx\">Administrar "); } else{ lblOpciones.Text = lblOpciones.Text.Replace("{administrar}", ""); } if (Convert.ToBoolean(dr["REPORTES"])){ lblOpciones.Text = lblOpciones.Text.Replace("{reportes}", "reportes.aspx\">Reportes "); } else{ lblOpciones.Text = lblOpciones.Text.Replace("{reportes}", ""); } if (Convert.ToBoolean(dr["VENTAS"])){ lblOpciones.Text = lblOpciones.Text.Replace("{ventas}", "ventas.aspx\">Ventas "); } else { lblOpciones.Text = lblOpciones.Text.Replace("{ventas}", ""); } } dr.Close(); cmd.Dispose(); cnn.Close(); cnn.Dispose(); } catch (Exception ex){ lblOpciones.Text = ex.Message; } }
Luego creamos el siguiente procedimiento almacenado:
USE [pventa] GO /****** Object: StoredProcedure [dbo].[proc_USERS_PERMISOS_MOSTRAR] Script Date: 09/17/2011 23:10:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[proc_USERS_PERMISOS_MOSTRAR] @USER_LOGIN NVARCHAR(50) AS SELECT U.* FROM USERS U WHERE U.[USER_LOGIN]=@USER_LOGIN GODespués modificamos el Page_Load para que quede así:
protected void Page_Load(object sender, EventArgs e) { try { Permisos(Context.User.Identity.Name); } catch (Exception ex) { lblOpciones.Text = ex.Message; } }Ahora ejecutamos de nuevo a aplicación, y al iniciar sesión veremos la siguiente pantalla:
Podemos ver como se aplican los permisos. Crea varios usuarios en el SQL Server y ponles diferentes permisos para que veas el efecto que tiene en la pantalla.
disculpa falta el procemiento para los permisos del usuario no lo pusiste lo podrias poner por favor y por cierto esta chido tu blog..saludos
ResponderEliminarde verdad estebloges de gran ayuda y gracias por pensar en los demas para nosotros que estudiamos sistemas ha sido de gran ayudasaludos desde ITESI Guanajuato
ResponderEliminarMuchas Gracias Saludos,
ResponderEliminarLocos esta parte no me sale, eh seguido los paso pero nada, porfavor me podrian enviar hasta esta parte en mi correcto hack10.5@hotmail.com
ResponderEliminarPORFAVOR ES URGENTE
Buen día. Espero me puedan ayudar. Esta parte no me queda, no hace el replace de forma correcta, me muestra lo siguiente al ejecutar el código:
ResponderEliminarventas.aspx">Ventasreportes.aspx">Reportesadministrar.aspx">AdministrarCerrar Sesión. No me muestra el menú como tu lo tienes. Espero su pronta respuesta. Hasta luego.
el problema es por que no están bien cerradas las etiquetas HTML.
ResponderEliminarcheca que estén los caracteres d escape (\)
\"ventas.aspx\"
Saludos
Me sigue apareciendo el menu de la misma manera tengo mi codigo asi
Eliminarif (Convert.ToBoolean(dr["ADMINISTRAR"]))
{
lblOpciones.Text = lblOpciones.Text.Replace("{administrar}"," administrar.aspx\">Administrar");
}
else
{
lblOpciones.Text.Replace("{administrar}", "");
}
if (Convert.ToBoolean(dr["REPORTES"]))
{
lblOpciones.Text = lblOpciones.Text.Replace("{reportes}"," reportes.aspx\">Reportes");
}
else
{
lblOpciones.Text.Replace("{reportes}", "");
}
if (Convert.ToBoolean(dr["VENTAS"]))
{
lblOpciones.Text = lblOpciones.Text.Replace("{ventas}"," ventas.aspx\">Ventas");
}
else
{
lblOpciones.Text.Replace("{ventas}", "");
}
y el menu aparece ventas.aspx">Ventas reportes.aspx">Reportes administrar.aspx">Administrar
Este comentario ha sido eliminado por el autor.
Eliminarif (Convert.ToBoolean(dr["administrar"])){
EliminarlblOpciones.Text = lblOpciones.Text.Replace("{administrar}","(li)(a href=\"administrar.aspx\")Administrar(/a)(/li)");
}
else{
lblOpciones.Text = lblOpciones.Text.Replace("{administrar}", "");
}
if (Convert.ToBoolean(dr["reportes"])){
lblOpciones.Text = lblOpciones.Text.Replace("{reportes}", "(li)(a href=\"reportes.aspx\")Reportes(/a)(/li)");
}
else{
lblOpciones.Text = lblOpciones.Text.Replace("{reportes}", "");
}
if (Convert.ToBoolean(dr["ventas"])){
lblOpciones.Text = lblOpciones.Text.Replace("{ventas}", "(li)(a href=\"ventas.aspx\")Ventas(/a)(/li)");
}
else {
lblOpciones.Text = lblOpciones.Text.Replace("{ventas}", "");
}
Cambie los "(" y ")" de las etiquetas li y a por los caracteres "<" y ">"
Agradezco tu respuesta. Buen día
ResponderEliminarLo he intentado pero me sigue mostrando el menú de la misma forma. Puedes enviarme el código de esta parte a mi correo sino es mucha molestia?
ResponderEliminarrobo-tics@hotmail.com.
Gracias
Hola buenas tardes. No puedo llevar a cabo el replace. Ya revise las etiquetas HTML como me comentaste, pero aparece lo mismo. Agradeceria de mucho tu ayuda. Buen día...
ResponderEliminarAlguien podría ayudarmeen enviarme el código de esta parte, es que no me queda el Replace. Es URGENTE. Agradezco su apoyo. Gracias
ResponderEliminardarthsolitude@gmail.com
estoy atorado igual, por favor alguien que me envie el codigo de esa parte del replace
ResponderEliminarse los agradecere mucho
jagarciardz@hotmail.com
tengo problemas con el metodo replace ya que al momento de iniciar sesion en el menu me muestra Administrar.aspx\">Administrar" Reportes.aspx\">Reportes" Ventas.aspx\">Ventas y no los textos correspondientes, espero pueda ayudarme con esta problema
ResponderEliminares necesario corregir el HTML generado.
ResponderEliminarEl problema es del lado del código c#.
Me sigue apareciendo el mismo error, no podrias volver a publicar el codigo con las correcciones o enviarmelo por correo?
EliminarMi correo es foxdie.shield@hotmail.com
gracias!
He estado investigando pero una no resulevo esa parte del codigo
Eliminarvoid Permisos(string prmUSER_LOGIN){
try{
SqlConnection cnn = new SqlConnection(clsMain.CnnStr);
cnn.Open();
SqlCommand cmd = new SqlCommand("EXECUTE [proc_USERS_PERMISOS_MOSTRAR]'" + prmUSER_LOGIN + "'", cnn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read()){
if (Convert.ToBoolean(dr["ADMINISTRAR"])){
lblOpciones.Text =
lblOpciones.Text.Replace("{administrar}","
administrar.aspx\">Administrar
");
}
else{
lblOpciones.Text = lblOpciones.Text.Replace("{administrar}", "");
}
if (Convert.ToBoolean(dr["REPORTES"])){
lblOpciones.Text =
lblOpciones.Text.Replace("{reportes}", "
reportes.aspx\">Reportes
");
}
else{
lblOpciones.Text = lblOpciones.Text.Replace("{reportes}", "");
}
if (Convert.ToBoolean(dr["VENTAS"])){
lblOpciones.Text =
lblOpciones.Text.Replace("{ventas}", "
ventas.aspx\">Ventas
");
}
else {
lblOpciones.Text =
lblOpciones.Text.Replace("{ventas}", "");
}
}
dr.Close();
cmd.Dispose();
cnn.Close();
cnn.Dispose();
}
catch (Exception ex){
lblOpciones.Text = ex.Message;
}
}
y aun me sigue mostrando Administrar.aspx\">Administrar" Reportes.aspx\">Reportes" Ventas.aspx\">Ventas .si puedes corregir esta parte del código te lo agradeceria mucho
lblOpciones.Text.Replace("{reportes}", "(li)Reportes(/li)")
Eliminarcambiar los parentesis por <>
Camarade teng me estoy haciendo bolas ya no se que mas hacer para solucionar este probelmas del remplace podrias pasarme el codigo de esa parte por favor mi correo es blemus_100@hotmail.com
Eliminar(li)(a reportes.aspx\")Reportes(/a)(/li)
ResponderEliminarme sigue apareciendo de esta manera
ResponderEliminar"ventas.aspx">Ventas "reportes.aspx">Reportesadministrar.aspx">Administrar
hay alguien que lo haya podido solucionar?
algien solociono el problema del Menu:
ResponderEliminarlblOpciones.Text = lblOpciones.Text.Replace("{administrar}","administrar.aspx\">Administrar");
Etube revisando pero me sale el mismo error. ¿cual es la sintaxis de lblOpciones.Text.Replace?
yo lo puse de esta manera y funciono
ResponderEliminarSqlConnection cnn = new SqlConnection(clsMain.CnnStr);
cnn.Open();
SqlCommand cmd = new SqlCommand("EXECUTE [proc_USERS_PERMISOS_MOSTRAR]'" + prmUSER_LOGIN + "'", cnn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (Convert.ToBoolean(dr["ADMINISTRAR"]))
{
lblOpciones.Text = lblOpciones.Text.Replace("{administrar}","[li][a href = administrar.aspx\">Administrar[/a][/li]");
}
else
{
lblOpciones.Text.Replace("{administrar}", "");
}
if (Convert.ToBoolean(dr["REPORTES"]))
{
lblOpciones.Text = lblOpciones.Text.Replace("{reportes}", "[li][a href = reportes.aspx\">Reportes[/a][/li]");
}
else
{
lblOpciones.Text.Replace("{reportes}", "");
}
if (Convert.ToBoolean(dr["VENTAS"]))
{
lblOpciones.Text = lblOpciones.Text.Replace("{ventas}", "[li][a href = ventas.aspx\">Ventas[/a][/li]");
}
else
{
lblOpciones.Text.Replace("{ventas}", "");
}
hay que cambiar la parte donde esta [] por estos <>
espero les sirva
Cambien los "(" y ")" de las etiquetas li y a por los caracteres "<" y ">"
ResponderEliminarEjemplo:
esto ()(/) por esto <> dentro va li
esto () (/) por esto <> dentro va a
aqui los puse asi, porque este textbox de comentarios no me deja incluirlos dentro saludos.
Ahora si funciona...
ResponderEliminar