ASP.NET - Error: al intentar hacer una plantilla en ejecució

 
Vista:

Error: al intentar hacer una plantilla en ejecució

Publicado por Esther (1 intervención) el 10/09/2008 09:33:42
Hola,

Tengo un problemón y necesito ayuda. He estado intentando hacerlo sola pero no hay manera.
La pág. la estamos haciendo en asp.net con visual basic.net. La versión anterior estaba hecha en asp. La parte en la que ahora estamos trabajando es de alta de pedidos. Lo han metido todo en la misma página (la búsqueda, la muestra de resultados y la cesta), simulando pestañas.

Bueno, el problema es que quieren que se muestre una plantilla, que se genera en ejecución con unos datos de la BD, debajo del gridview donde sale el producto que solicitan.
En la versión de la web anterior lo hacían en otro asp a parte y medianamente me he servido de ese código para dibujar la plantilla.

En principio me dieron dos opciones para mostrar esas plantillas. La primera generar una fila más en el gridview, debajo del producto. Pero no creo que se pueda simplemente añadir esa fila sin más porque sino me equivoco seguiría teniendo la misma división de columnas no?
La otra opción es mostrar esa plantilla justo debajo del gridview. Una de las peticiones es que si uno de los productos que se añade en ese momento a la lista tiene plantilla directamente se muestra y se posicionaría en ella.

Se me ocurrió usar una girdview en el que añadiría una tabla y en la primera celda escribiría la plantilla. Al final conseguí pintarla pero empezó a darme el siguiente error:

Error de la validación del estado de vista MAC. Si un clúster o una batería de servidores Web alojan esta aplicación, asegúrese de que la configuración <machineKey> especifica la misma validationKey y el mismo algoritmo de validación. AutoGenerate no se puede utilizar en un clúster.

Estuve buscando por internet y encontré a una persona que decía que si ponías en la página EnableViewStateMac="false" se solucionaba Con esto se resolvió el error y creía tenerlo ya pero me di cuenta de que tras dibujar esa plantilla, incluso sin llegar a tocar ninguno de sus botones, si pulso en cualquier otro botón de la página me devuelve el siguiente error:

Error de servidor en la aplicación '/WebY'.
La información de estado no es válida para esta página y podría estar dañada.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.Web.HttpException: La información de estado no es válida para esta página y podría estar dañada.

El código que uso para generar la plantilla es este:

Public Function recogerPlantilla(ByVal idArticulo As String) As String
Dim ObjFiltrado As New WebSolicitudes.GestionSolicitud
Dim dtArticulo As New Data.DataTable
Dim idArtiTemp = "", strPlantilla = "", strDescArticulo As String = ""
idArtiTemp = idArticulo
Dim x As Int16 = 0
strPlantilla = ObjFiltrado.ObtenerEspecificaciones(idArtiTemp, Session("strIdioma"), "especificaciones", "especificacion", 0)
'Temporal

Dim j As String = "<br/><div class='validaciones'><img alt='' align='middle' src='ItemsImagesexclamation.gif'/> Este articulo requiere una serie de especificaciones que debe introducir.<br/>Los Campos de color amarillo son obligatorios"

j += "</div><br/><br/><form action='index.aspx' target='busquedas' method='post' name='form4' >"
j += "<table align='center' cellpadding='0' cellspacing='0' width='90%' border='1' style='border-color:White' class='paginar'>"
j += "<tr><td colspan='2' class='cabecerapedido'>Listado de especificaciones:</td>"


j += "<input type='hidden' id='especificacion' name='especificacion' value='true'/></tr><tr>"
j += "<td class='especificaciones'>Centro:</td><td class='especificaciones'><input class='especificacion' id='centro' name='centro' value='" + Session("centro_id") + "' readonly='readonly' style='size:20px'/></td>"
j += "</tr><tr><td class='especificaciones'>Usuario:</td><td class='especificaciones'><input class='especificacion' id='usuario' name='usuario' value= '" + Session("user_id") + "' readonly='readonly' style='size:20px'/></td></tr>"
j += "<tr><td class='especificaciones'>Fecha:</td><td class='especificaciones'>"

Dim fecha As New Date
fecha = Today()

j += "<input class='especificacion' id='fechaPlantilla' name='fechaPlantilla' value='" + fecha.ToShortDateString() + "' readonly='readonly' style='size:20px'/></td></tr>"
j += "<tr ><td class='especificaciones'>Código Artículo:</td><td class='especificacion'>"
j += "<input type='hidden' class='especificacion' id='idarticulo' name='idarticulo' value='" + idArtiTemp + "'/>"

Dim idArtiEspacio As String 'Le damos un espacio para la presentación
idArtiEspacio = idArtiTemp + " "
Try
dtArticulo = ObjFiltrado.DetalleArticulo(idArtiTemp, )
If dtArticulo Is Nothing Then
strDescArticulo = vbNullString
Else
strDescArticulo = CStr(dtArticulo.Rows(0)("DescArticulo"))
End If

Catch ex As Exception

End Try
j += "" + idArtiEspacio + " " + strDescArticulo + " "
j += "</td></tr>"
j += strPlantilla
j += "</table><center>"
j += "<input type='hidden' id='text2' name='cantidad' value='" + Request.Form("cantidad") + "'/>"
j += "<input type='hidden' id='Hidden1' name='solicitado' value='true'/>"
j += "<input type='hidden' id='Hidden2' name='min' value='" + Request.Form("min") + "'/>"
j += "<input type='hidden' id='Hidden3' name='max' value='" + Request.Form("max") + "' />"
j += "<input type='hidden' id='Hidden4' name='lote' value='" + Request.Form("lote") + "' />"
j += "<input type='hidden' id='Hidden5' name='destinatario' value='" + Request.Form("destinatario") + "' />"
j += "<input type='hidden' id='Hidden6' name='identsolicitante' value='" + Request.Form("identsolicitante") + "' />"
j += "<input type='hidden' id='Hidden7' name='mod_cliente' value='" + Request.Form("mod_cliente") + "' />"
j += "<input type='hidden' id='Hidden8' name='Telefono' value='" + Request.Form("telefono") + "' />"
j += "<input type='hidden' id='Hidden9' name='Nombre' value='" + Request.Form("nombre") + "'/>"
j += "<input type='hidden' id='Hidden10' name='direccion' value='" + Request.Form("direccion") + "' />"
j += "<input type='hidden' id='Hidden11' name='poblacion' value='" + Request.Form("poblacion") + "' />"
j += "<input type='hidden' id='Hidden12' name='provincia' value='" + Request.Form("provincia") + "' />"
j += "<input type='hidden' id='Hidden13' name='cp' value='" + Request.Form("cp") + "' />"
j += "<input type='hidden' id='Hidden14' name='horario' value='" + Request.Form("horario") + "' />"
j += "<input type='hidden' id='Hidden15' name='idpersona' value='" + Request.Form("idpersona") + "' />"
j += "<input type='hidden' id='Hidden16' name='NombrePersona' value='" + Request.Form("NombrePersona") + "' />"
j += "<input type='hidden' id='Hidden17' name='TelefonoPersona' value='" + Request.Form("TelefonoPersona") + "' />"
j += "<input type='hidden' id='Hidden18' name='valido' value='true'/>"

j += "<input type='button' value='Continuar' id='button1' name='button1' onclick='especificaciones();'/>"

j += "</center>"
j += "</form>"
Return j

End Function

En otro lugar del codigo le paso el dato que guardo en j a una tabla que he creado en un gridview (Pense en meterlo allí por que en cuanto el usuario ha metido el articulo tiene que hacer un focus pero no sabia como hacerlo sino…)

Esta es la funcion de javascript que usaban en la version anterior
function especificaciones()
{
var completo=0;

for(i=5;i<document.form4.length-22;i++)
{
//alert(document.all.form1[i].className);
if(document.all.form4[i].className=="Especificacion")
{
if (document.all.form4[i].value=="")
{
completo=1;
break;
}
}
}
Pero como ya dije con que solo se pinte el dato me sale ese error… Ya no se que más probar. Incluso e intentado un response.write pero ni sabria como pintarlo en un lugar especifico ni se mantenerlo porque una vez que pulso un boton la pag se recarga y desaparece la plantilla. Tampoco sé si sería una solucion dibujarla dentro de un panel sin tablas ni gridviews pero tampoco sabria como hacerlo en ejecución. Tambien probé a escribirlo dentro de una tabla sin grid pero me dio el mismo error. No sé me ocurre nada más y tenemos que entregar en unos días. Si me he explicado mal me decis y os comento mejor o lo que sea. Muchisimas gracias.
Un saludo
Esther
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder