|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Javier Santamaria
101
« en: Lunes 18 de Junio de 2007, 16:07 »
Lo hago por codigo en .aspx.vb. Es decir este es el codigo:
If MsgBox("Pregunta", MsgBoxStyle.YesNo, "Confirmation") = MsgBoxResult.Yes Then
codigo en caso de afirmacion
else
codigo en caso de negacion
end if
102
« en: Lunes 18 de Junio de 2007, 12:57 »
Hola, creo que lo que tienes que hacer es asignarle el navigateurl al link en funcion de cual es el nombre o poner un campo en la base de datos que te diga cual es el link que pertenece a ese nombre y hacerle un databind a ese campo al cargar el grid
Saludos
103
« en: Viernes 15 de Junio de 2007, 15:47 »
Hola amigos, he publicado mi aplicacion en el servidor y todo funciona perfectamente hasta que intento mostrar un MsgBox para pedir la confirmacion del usuario. Dicho MsgBox es de tipo yes/no. El caso es que cuando se tiene que mostar el MsgBox me sale este error:
Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.
Me gustaria saber que tengo que hacer para poder mostrar los MsgBox en el servidor, ya que en mi Pc se ejecuta perfectamente.
PD: He buscado enla ayuda de MSDN sobre UserInteractive mode, peor solo me da una ayuda para saber si el modo es verdadero o falso, pero no dice nada de como cambiarlo.
Saludos y muchas gracias.
104
« en: Martes 12 de Junio de 2007, 15:21 »
Me alegro, nos vemos en otra.
Saludos
105
« en: Martes 12 de Junio de 2007, 12:57 »
Hola Maxus, ya estamos mas cerca. Dos cosilas: 1. Esto te funciona: Etiqueta.Text = dli.FindControl("ContenidoLabel").ToString();
y esto no: Etiqueta.Text = dli.FindControl("Contenido").ToString();
Porque cuando declaras el datalist en la pagina.aspx lo haces asi: Contenido: <asp:Label ID="ContenidoLabel" runat="server" Text='<%# Eval("Contenido") %>'></asp:Label>
Donde Contenido: es basicamente un literal, es decir, son solo letras; y <asp:Label ID="ContenidoLabel" runat="server" Text='<%# Eval("Contenido") %>'></asp:Label> es la label qeu te carga los datos de la BD. Si te fijas en el ID de la label dice "ContenidoLabel". Por eso lo tienes que hacer referencia (en dli.FindControl("Contenido")) como contenidolabel y no como contenido. Espero que te aclares 2. Para solucionar el tema de la imagen yo haria esto: Pagina .aspx Imagen: <asp:ImageButton ID="ImagenImageButton" runat="server" ></asp:ImageButton><br /> <br /> <asp:Label ID="RutaImagenLabel" runat="server" Text='<%# Eval("Imagen") %>' Visible="False"></asp:Label>
Pagina .aspx.cs foreach (DataListItem dli in DataList1.Items) { Label Etiqueta = new Label(); Etiqueta.Text = dli.FindControl("ContenidoLabel").ToString(); ImageButton Imagen = new ImageButton(); Imagen.ImageUrl = dli.FindControl("ImagenImageButton").ImageUrl; Label Ruta = new Label(); Ruta.text = dli.FindControl("RutaImagenLabel").text; if ((Etiqueta.Text == "") || (Etiqueta.Text == null)) { Imagen.PostBackUrl = "pagina sin contenido"; } else { Imagen.PostBackUrl = "Pagina con contenido" (supongo que ruta.text); } }
A ver si de esta solucionamos el problema. Saludos
106
« en: Martes 12 de Junio de 2007, 12:24 »
Hola de nuevo, he conseguido ver el mensaje que me genera la redireccion. Para el que el interese le dejo como:
Cambiamos customerrors mode="RemoteOnly" por mode="off"
Ahora probare a solucionar el error
Saludos
107
« en: Martes 12 de Junio de 2007, 11:33 »
Hola de nuevo, prueba a crearte una aplicacion que simplemente te lea la BD y la meta en el datalist (como he hecho yo en el codigo que te he puesto). De hecho puedes copiar ese codigo y cambiarle el datasource (en lugar de access haces uno de sql) y cambiar la consulta de seleccion por la que tu necesites. Te dejo un ejemplo, pero probablemente lo tengas que adaptar (el ejemplo lo baso en el ultimo post). Te pongo los cambios en rojo: Pagina .aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:SqlDataSource ID="SqlDataSource1" runat="server" DataFile="Tu base de datos" SelectCommand="SELECT [idPestana], [Titulo], [Contenido], [Imagen], [PestanaID] FROM [Tu tabla]" WHERE [PestanaID=3]></asp:SqlDataSource>
<asp:DataList ID="DataList1" runat="server" DataSourceID=" SqlDataSource1"> <ItemTemplate> idPestana: <asp:Label ID="idPestanaLabel" runat="server" Text='<%# Eval("idPestana") %>'></asp:Label><br /> Titulo: <asp:Label ID="TituloLabel" runat="server" Text='<%# Eval("Titulo") %>'></asp:Label><br /> Contenido: <asp:Label ID="ContenidoLabel" runat="server" Text='<%# Eval("Contenido") %>'></asp:Label><br /> Imagen: <asp:ImageButton ID="ImagenImageButton" runat="server" Aqui tendras que poner el link de la imagen que quieres mostrar con imageurl></asp:ImageButton><br />
<br /> PestanaID: <asp:Label ID="PestanaIDLabel" runat="server" Text='<%# Eval("PestanaID") %>'></asp:Label><br />
</ItemTemplate> </asp:DataList></div> </form> </body> </html> Pagina .aspx.csusing System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { foreach (DataListItem dli in DataList1.Items) { Label Etiqueta = new Label();
Etiqueta.Text = dli.FindControl("ContenidoLabel").ToString(); ImageButton Imagen Imagen.imageurl =dli.FindControl("ImagenImageButton").imageurl;
if (Etiqueta.Text == "") { Lo que quieras hacer" } else { Lo que quieras hacer" } } } } El FindControl lo que hace es buscarte el control (elemento) que tu le especificas entre parentesis dentro del elemento que le indicas (en tu caso el datalist). Y te devuelve todas las propiedades de ese control para que puedas trabajas con ellas. Lo de las imagenes creo que con un imagebutton tienes suficiente. Me gusta mas el control web qeu el HTML clasico. Si te sale haciendolo poco a poco luego intenta integrarlo en tu aplicacion, pero primero prueba con una aplicacion de prueba. Saludos
108
« en: Lunes 11 de Junio de 2007, 13:19 »
Hola Maxus, Parece que se resiste el tema. A ver que al final sale. He estado haciendo una prueba y a mi esto me funciona: Pagina .aspx.cs using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { foreach (DataListItem dli in DataList1.Items) { Label Etiqueta = new Label(); HyperLink HLink = new HyperLink(); Etiqueta.Text = dli.FindControl("DestacadoLabel").ToString(); if (Etiqueta.Text == "false") { HLink.NavigateUrl = "~/url1.aspx"; HLink.Text = "URL1"; } else { HLink.NavigateUrl = "~/url2.aspx"; HLink.Text = "URL2"; } } } }
Pagina .aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/dbweb.mdb" SelectCommand="SELECT [Zona], [Metros], [Destacado] FROM [Inmueble]"></asp:AccessDataSource> <asp:DataList ID="DataList1" runat="server" DataSourceID="AccessDataSource1"> <ItemTemplate> Zona: <asp:Label ID="ZonaLabel" runat="server" Text='<%# Eval("Zona") %>'></asp:Label><br /> Metros: <asp:Label ID="MetrosLabel" runat="server" Text='<%# Eval("Metros") %>'></asp:Label><br /> Destacado: <asp:Label ID="DestacadoLabel" runat="server" Text='<%# Eval("Destacado") %>'></asp:Label><br /> Link: <asp:HyperLink ID="HyperLink1" runat="server">HyperLink</asp:HyperLink><br /> <br /> </ItemTemplate> </asp:DataList></div> </form> </body> </html>
Podrias decir exactamente en que linea te da le error. Es decir, que instruccion intentas ejecutar cuando te salta le error? Saludos
109
« en: Lunes 11 de Junio de 2007, 12:55 »
Hola,
El problema es que la aplicacion corre bien en mi PC, pero cuando la subo al servidor al intentar entrar en una pagina me redirecciona a la pagina que tengo por defecto en el customerrors del web.config.
Alguien sabe porque puede ser y/o como saber que error me genrea la redireccion
Muchas gracias de antemano
110
« en: Lunes 11 de Junio de 2007, 11:33 »
Pon la propiedad "AutoPostBack" del dropdownlist a true. Por defecto es false.
Espero que te ayude. Saludos
111
« en: Lunes 11 de Junio de 2007, 11:31 »
Hola Maxus,
Yo veo un par de cosillas en esos codigos.
Primero yo hago esto:
For Each item In DataList1.Items
y tu haces esto:
foreach (DataListItem dli in DataList1)
Yo comparo con los elemntos del datalist y tu compara con el datalist completo. No creo qeu lo puedas hacer asi, deberia de haber alguna manera para recorrer los elementos.
Segundo no se si todos los campos del itemtemplate seran databounds. Para verlo yo iria al diseño en lugar del codigo para ver si lo puedes hacer por ahi.
Como recomendacion primero probaria con lo del punto 1.
Saludos
112
« en: Jueves 7 de Junio de 2007, 17:37 »
A ver esto es una prueba que he hecho. Esta en VB, pero se traduce facil a C#
********************************************************************* Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim item As DataListItem
For Each item In DataList1.Items
Dim hlink As HyperLink = item.FindControl("Hyperlink1") Dim des As Label
des = item.FindControl("ContenidoLabel") If des.Text = "True" Then hlink.NavigateUrl = "~/url1.aspx" hlink.Text = "url1" Else hlink.NavigateUrl = "~/url2.aspx" hlink.Text = "url2" End If Next
End Sub *********************************************************************
Mira a ver si te sirve.
Ya me cuentas.
113
« en: Jueves 7 de Junio de 2007, 16:44 »
Hola Maxus, yo suelo tener el codigo aparte porque me da mas claridad. De todas formas entiendo que este simbolo "<%" indica que empieza un bloque de codigo que no es HTML (si no es asi corrigeme, yo tambien soy novatillo en bastantes cosas ). Pero el error al que se refiere creo que no tiene nada que ver con la consulta a la BD. Podrias poner donde esta puesto ese codigo? Estaria dentro del page load como aqui: ********************************************************************* <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { Aqui iria el codigo que has puesto anteriormente } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> </form> </body> </html> ********************************************************************* Y ya si puede ser pon el codigo completo de la pagina para ver que puede pasar. Indica donde te aparecen los dientes de sierra dando el error de sintaxis. Un saludo
114
« en: Jueves 7 de Junio de 2007, 12:16 »
Podrias poner el codigo qeu haces para consultar a la base de datos y para luego mostrar los contenidos que te da el error de sintaxis a ver si viendolo te puedo echar una mano.
115
« en: Jueves 7 de Junio de 2007, 11:45 »
Hola a todos,
Hace unos dias me recomendaron usar la herramienta UrlRewriting paracambiar la url de mis paginas web. Bien me he estado leyendo la documentacion y haciend varias pruebas y no me funciona. Os dejo el codigoque tengo a ver si alguien me puede ehar una mano para poder cambiar esas url.
******************************************************************************* Esto va dentro de la seccion <configuration> del web.config
<configSections> <section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission ="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter" /> </configSections>
<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage = "~/Index.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07" > <rewrites> <add name="Eucon Manifest" virtualUrl="~/(.*)/(.*)/(.*)/(.*)/Manifest.aspx" destinationUrl ="^~/Extranet/Manifest.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" ignoreCase="true" /> </rewrites> </urlrewritingnet>
Esto va dentro de la seccion <system.web> del web.config
<httpModules> <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" /> </httpModules> *****************************************************************************
Es decir, quiero cambiar: ~/Extranet/Container/Eucon/Container Manifest/Manifest.aspx por ~/Extranet/Manifest.aspx
Se agradece cualquier ayuda.
116
« en: Jueves 7 de Junio de 2007, 11:10 »
Los contenidos los cargas de la BD tambien de la tabla pestaña? Si es asi, supongo que cuando recuperes la pestaña puedes preguntar si contenido <> null y en caso afirmativo cargar la pagina de tipo 2.
Espero que te sirva, saludos
117
« en: Jueves 7 de Junio de 2007, 11:05 »
Gracias por la advertencia. Tendre que leeer mas tranquilamente el articulo que refieres en el blog, pero mas o menos esta claro. De todas formas es una tarea que no me corresponde a mi, por tanto como tu dices "las papas no me quemaran" Saludos
118
« en: Jueves 7 de Junio de 2007, 10:38 »
Gracias de nuevo. Decidi tener una aplicacion y ejecutar funcionalidades en funcion de roles. Me parecio lo mas sencillo.
Ahora otra cosilla: Podria reescribir las URL's para que no se supiera el path exacto de la pagina .aspx y pareciera una aplicacion diferente cada funcionalidad?
Gracias de antemano
119
« en: Miércoles 6 de Junio de 2007, 10:59 »
Hola de nuevo.
Os dejo la solucion por si os interesa:
La solucion es que estaba ejecutando la aplicacion en el servidor con la version del framework 1.1 y yo la he desarrollado con 2.0. Por tanto actualize la version del servidor y funciono.
120
« en: Martes 5 de Junio de 2007, 13:56 »
Hola, que tal?
Tengo un problemilla al publicar mi aplicacion. En mi PC funciona bien, pero cuando la subo al servidor mediante "Publish Web Site" e intento acceder a ella me da el siguiente error en el web.config:
Parser Error Message: Unrecognized configuration section 'connectionStrings'
Alguien sabe como arreglarlo?
Gracias por adelantado
121
« en: Martes 5 de Junio de 2007, 11:02 »
Hola Sergio, no hay requerimiento inicial. Es decir, tengo que fijar la estructura para implementar aplicaciones en esa estructura y no sabia cual de las dos opciones elegir. No sabia si podria implementar aplicaciones dentro de otras aplicaciones o si seria mejor implementar solo una aplicacion y re-escribir las url's para dar la sensacion de que son aplicaciones distintas.
Gracias por las respuestas
Un saludo
122
« en: Viernes 1 de Junio de 2007, 11:43 »
Hola aradano, Te contesto a las dos ultimas preguntas. Para que diga bienvenido X, lo que puedes hacer es en una master page (si quieres que salga en todas) o en la pagina de inicio crearte una label con "Bienvenido ",donde le pases el nombre del usuario que se logueo en el sistema para ponerselo a continuacion. Para mandar un email echa un vistazo a esta pagina que lo explica muy bien: http://www.elguille.info/NET/ASPNET/enviar...o_ASPNET_v2.htmEspero que te sirva. Un saludo
123
« en: Viernes 1 de Junio de 2007, 11:37 »
Hola, a ver si te entiendo. Quieres recorrer con un for o un for each los registros devueltos en el datareader por la consulta? Si es asi creo que estas recorriendo mal el datareader. Es decir, al hacer dr1.Read(); solo lees el primer registro devuelto por la select. Para recorrerlo se hace asi:
do while dr1.read() do 'Sentencias que quieras hacer loop
Espero que sea eso lo que preguntas
un saludo
124
« en: Jueves 24 de Mayo de 2007, 12:10 »
Hola, que tal? El problema que me surge ahora es que tengo que hacer una estructura de archivos de tal forma que haya una aplicacion inicial y desde esta se pueda llamar aplicaciones diferentes contenidas en ella. Me explico: Tengo el siguiente arbol de directorios: 1. Carpeta raiz 1.1 Carpeta nivel 1 - Aplicacion inicial 1.2 Carperta nivel 1 1.2.1 Carpeta nivel 1.2 1.2.1.1 Caperta nivel 1.2.1 - Aplicacion 1 1.2.1.2 Caperta nivel 1.2.1 - Aplicacion 2 1.2.1.3 Caperta nivel 1.2.1 - Aplicacion 3 1.2.2 Carpeta nivel 1.2 1.2.2.1 Caperta nivel 1.2.2 - Aplicacion 1 1.2.2.2 Caperta nivel 1.2.2 - Aplicacion 2 1.2.3 Carpeta nivel 1.2 1.2.3.1 Caperta nivel 1.2.3 - Aplicacion 1 1.3 Carperta nivel 1 1.3.1 Carpeta nivel 1.3 1.3.1.1 Caperta nivel 1.3.1 - Aplicacion 1 1.3.1.2 Caperta nivel 1.3.1 - Aplicacion 2 1.3.2 Carpeta nivel 1.3 1.3.2.1 Caperta nivel 1.3.2 - Aplicacion 1 1.3.2.2 Caperta nivel 1.3.2 - Aplicacion 2 Pues bien cuando se ejecute cualquiera de las aplicaciones del arbol por primera vez se debe ejecutar la aplicacion inicial que es la de acceso al sistema (login) y la que muestra los menus dependiendo de los roles de los usuarios. El problema que tengo es que no se como hacer esto y se me ocurren dos opciones: 1. Hacer una aplicacion diferente (entendiendo como tal abrir el visual studio y seleccionar create website) para cada una de las aplicaciones y luego ir llamando a las paginas de las otras aplicaciones dependiendo de las opciones de los usuarios. 2. Crear una unica aplicacion que contenga todas las paginas ordenadas con esa estructura de archivos y llamar a las paginas de las subcarpetas dependiendo de las opciones de los usuarios. Creo que es mas facil la segunda opcion, pero esta me plantea una duda, que es la siguiente: Podria de alguna manera ocultar la ruta completa de la pagina y mostrar solo lo que a mi me interese, es decir: - Estoy en la aplicacion padre y la url es: http://localhost:4456/1.1/Login.aspx- Una vez que hace login y se carga el menu la url es: http://localhost:4456/1.1/Menu.aspx- Cuando seleccione una opcion (por ejemplo la aplicacion 1 de la carpeta 1.2.1.1) me cargara la pagina que quiero, pero me gustaria que en vez de aparecer en la url: http://localhost:4456/1.1/1.2.1/1.2.1.1/Index.aspxapareciera esto: http://localhost:4456/1.1/Index.aspx (omitiendo el resto de la ruta /1.2.1/1.2.1.1) Espero vuestras respuestas, por favor es urgente. Muchas gracias por adelantado.
125
« en: Jueves 24 de Mayo de 2007, 11:19 »
Hola, les dejo la solucion que me pasaron en otro foro por si les interesa:
Si mal no recuerdo, usar config = WebConfigurationManager.OpenWebConfiguration("~/web.config") te da un archivo de solo lectura.
Para obtener un archivo al cual puedes escribir, usa WebConfigurationManager.OpenWebConfiguration("~").
También, asegúrate de que la cuenta bajo la cual corre ASP.NET tiene permisos de escritura sobre el archivo/directorio de la aplicación.
Pero, creo que estas escogiendo la manera mas difícil de hacer esto.
En vez de editar web.config directamente, yo guardara las conexiones en un archivo externo, y sobreescribiría *ese* archivo.
Ejemplo :
En ese archivo incluyes las conexiones que quieras, igualito como si fuera web.config:
connectionString="bla, bla, bla" providerName="System.Data.SqlClient" />
connectionString="bla, bla, bla" providerName="System.Data.SqlClient" />
Ahora, con simplemente sobreescribir conexiones.config, tienes los cambios que quieras.
Hay una ventaja adicional al hacerlo así, y es que puedes asignar permisos de escritura por roles.
Por ejemplo, le das derecho de sobreescribir web.config al administrador del sistema, pero el administrador de la base de datos podría editar conexiones.config.
Administrativamente, eso tiene mas sentido.
Nota: para poder habilitar que la Aplicacion reinicie automáticamente cuando conexiones.config es modificado, tienes que hacer un cambio en el machine.config.
En , edita , agregándole
restartOnExternalChanges="true"
Quedará así :
...y listo.
Nota: el PublicKeyToken tuyo puede ser distinto al mío. No hagas "cut-and-paste de esa parte. Solo de restartOnExternalChanges="true".
Ahora solo tienes que sobreescribir conexiones.config...y tus nuevas conexiones funcionarán inmediatamente.
|
|
|