2) Responder.Spx: la página de visualización y respuesta del tema
< %@ page lenguaje = c# habilitionSessionState = false debug = verdadero %>
< %@ importación de nombres = sistema %>
< %@ name de ensamblaje = system.data %>
< %@ importación de nombres = system.data %>
< %@ importación de nombres = system.data.ado %>
<html> <cead>
<title> Publicar nuevo tema. </title>
<%: estos son los ensamblajes y espacios de nombres importados necesarios-%>
<Script Language = C# Runat = Server>
conjunto de datos DS, RS;
Datarow dr;
cadena postID;
public void page_load (remitente de objeto, EventArgs E)
{
// Verifique si la página está de vuelta
if (! Page.ispostback)
{
// Obtener el postid de la cadena de consulta
postID = request.Params [postID];
if (postid! = null)
{
// cadena de conexión de base de datos. Cambie la ruta al archivo de la base de datos si tiene alguna otra ruta donde
// está guardando su archivo de base de datos
String [correo electrónico protegido] Provider = Microsoft.Jet.OLEDB.4.0; Data Source =+Server.Mappath (.// DB // Board.mdb);
// hacer una conexión a la base de datos
Adoconnection myconn = new AdoConnection (strconn);
// cadena para seleccionar los registros de la tabla NewPost
cadena strcon = seleccionar sujeto, nombre, correo electrónico, mensaje, fecha de newpost donde postid =+postid;
// Establecer un eDodatasetCommand
adodataSetCommand myCommand = new ADODATATASETCOMMAND (Strcon, MyConn);
ds = new DataSet ();
// Nunca olvides abrir la conexión
myconn.open ();
// llenar el conjunto de datos
MyCommand.FillDataSet (DS, NewPost);
// Obtener la fila en la posición '0' y guárdela en un objeto Datow
// ¿Por qué remar en la posición '0'? ¡Dado que solo puede haber un registro con el PostId dado, recuerde!
// ¿Por qué poner en un datarow? Es fácil acceder a datos desde un datAROW
dr = ds.tables [newPost] .rows [0];
// Obtenga el sujeto del DatoRow y configúrelo en el campo de sujeto del formulario de respuesta de la publicación
SUMT.TEXT = RE:+DR [SUJTO] .ToString ();
// Seleccione las respuestas a la publicación de la tabla de respuesta
strcon = seleccionar nombre, correo electrónico, asunto, mensaje, fecha de respuesta donde PostId =+postid;
// Hacer un nuevo conjunto de datos ADODATASETCOMMA para la tabla de respuesta
adodataSetCommand myCommand2 = new ADODATATASETCOMMAND (Strcon, MyConn);
rs = new DataSet ();
// llenar el conjunto de datos
myCommand2.FillDataSet (RS, respuesta);
// código para actualizar el campo Vistas para la tabla NewPost
// Seleccione el campo Vistas de la tabla para un postid determinado
strcon = Seleccionar vistas de NewPost Where PostId = +PostId;
// Haz un AdoCommand aquí ya que queremos un adodatoader más tarde
ADOCOMMAND VICOMM = new AdoCommand (strcon, myconn);
lector de adodatoader;
// ejecutar la declaración y crear un adodatoader
vicomm.execute (lector de salida);
// Lea el primer registro (¡solo puede haber un registro, recuerde!)
lector.read ();
// Obtenga un valor int32 de la primera columna (tenemos una columna en el lector, verifique la instrucción SELECT anterior)
int i = Reader.getInt32 (0);
// Aumentar el recuento de vistas
i ++;
lector.close ();
// Actualizar la tabla NewPost con el valor de las nuevas vistas
strcon = update newPost set Vistas = +i +donde (postid = +postid +);
// ya que estamos utilizando el mismo objeto AdoCommand para esta declaración también para establecer la propiedad CommandText
vicomm.commandText = strcon;
// Dado que esta declaración no dará lugar a la salida, utilizamos el método ExeceNeNQuery ()
vicomm.executenQuery ();
// Cerrar la conexión
myconn.close ();
}
}
}
// Este método se llama cuando se hace clic en el botón Enviar
public void Subt_click (remitente de objetos, EventArgs e)
{
// consigue el postid
postID = request.Params [postID];
// procede solo si se llenan todos los campos requeridos
if (page.isvalid && name.text! = && semat.text! = &&2 correo electrónico.text! =) {
DateTime ahora = DateTime.NOW;
errmess.text =;
// Tenemos que llamar a la página PostMessage.aspx con una consulta para publicar los datos en la base de datos.
// Por lo tanto, primero tenemos que construir la consulta personalizada a partir de los datos publicados por el usuario
// también, dado que estamos utilizando una consulta, tenemos que codificar los datos en formato UTF8
String req = name =+ system.web.httputility.urlencodeToString (name.text, system.text.encoding.utf8);
req+ = && email =+ system.web.httputility.urlencodetostring (correo electrónico.text, system.text.encoding.utf8);
req+= && stem =+system.web.httputility.urlencodeToString (somet.text, system.text.encoding.utf8);
req+= && ip =+system.web.httputility.urlencodetostring (request.userhostaddress.toString (), system.text.encoding.utf8);
req+ = && date =+ system.web.httputility.urlencodetostring (ahora.ToString (), system.text.encoding.utf8);
req+ = && message =+ system.web.httputility.urlencodetostring (message.text, system.text.encoding.utf8);
// codifica no para indicar que la publicación no es una publicación nueva, pero es una respuesta a un mensaje anterior
req+ = && newPost =+ system.web.httputility.urlencodetostring (no, system.text.encoding.utf8);
req+ = && previd =+ system.web.httputility.urlencodetostring (postid, system.text.encoding.utf8);
// Llame a la página Postmessage con nuestra consulta personalizada
Page.navigate (PostMessage.aspx? + Req);
}
demás
{
Errmess.text = Complete todos los campos requeridos! ;
}
}
</script>
<Link href = mystyle.css type = text/css rel = stylesheet> </head>
<Body TopMargin = 0 LeftMargin = 0 RightMargin = 0 MarginWidth = 0 MarginHeight = 0>
<%-Incluya un archivo de encabezado 'Header.inc'-%>
<!-#include file = header.inc->
<br>
<Div align = Center>
<Tabla Border = 0 ancho = 80% CellSpacing = 2>
<tr class = fohead> <th width = 20%> nombre del autor </th>
<th width = 80%> mensaje </th> </tr>
<%- A continuación estoy encapsulando el correo electrónico del autor sobre el nombre del autor
para que cuando haga clic en el autor, se le envíe un correo electrónico
También estoy obteniendo el tiempo de detención de la base de datos y mostrando la fecha y la hora por separado -%>
<tr class = folight> <td RowsPan = 2 align = Center> < %= <a href = mailto:+dr [correo electrónico]+>+dr [nombre]+</a> %> <br>
<font size = 1> <%= dr [date] .ToString (). TODATETIME (). ToshortDateString ()%> <br>
< %= dr [date] .ToString (). TODATETIME (). ToshorttimeString () %> </font>
</td>
<td> <b> sujeto: </b> < %= dr [sujeto] %> </td> </tr>
<tr class = folight>
<TD> <pre> < %= dr [mensaje] %> </pre> </td>
</tr>
<%-Obtenga todas las respuestas a la publicación original y muéstrales-%>
<% int no = rs.tables [respuesta] .rows.count;
if (no> 0)
{
para (int j = 0; j <no; j ++)
{
datarow rd = rs.tables [respuesta] .rows [j];
%>
<tr class = fodark>
<td align = center> < %= <a href = mailto:+rd [correo electrónico]+>+rd [nombre]+</a> %> <br>
<font size = 1> <%= rd [date] .ToString (). TodateTime (). ToshortDateString ()%> <br>
< %= rd [date] .ToString (). TODATETIME (). ToshortTimEdring () %> </font>
</td>
<TD> <pre> < %= rd [mensaje] %> </pre> </td>
</tr>
<%
}
}
%>
</table>
</div>
<H3 align = Center class = fodark> <a href = foro.aspx> Haga clic aquí </a> Para volver al foro.
<br> Responder a la publicación anterior. </h3>
<br>
<ASP: etiqueta id = errmess text = style = color:#ff0000 runat = server />
<form de runat = servidor>
<TABLE BORDER = 0WIDTH = 80% Align = Center>
<tr>
<td class = fohead colspan = 2> <b> Responder a la publicación </b> </td>
</tr>
<tr class = folight>
<TD> Nombre: </td>
<TD> <asp: textbox text = id = name runat = server/> <font color =#ff0000>*</font> </td>
</tr>
<tr class = folight>
<TD> Correo electrónico: </td>
<td> <asp: textbox text = id = correo electrónico runat = server/> <font color =#ff0000>*</font> </td>
</tr>
<tr class = folight>
<td> sujeto: </td>
<TD> <asp: textbox test = id = width = 200 runat = server/> <font color =#ff0000>*</font>
</td> </tr>
<tr class = folight>
<TD> Mensaje: </td>
<TD>
<ASP: TextBox id = Mensaje runat = servidor
columnas = 30 filas = 15 textMode = multiline> </asp: textbox> </td>
</tr>
<tr class = folight>
<td colspan = 2>
<ASP: Button Class = Fodark id = Write onClick = Subt_click Runat = Server Text = Subt> </Asp: Button> </td> </tr>
</table>
</form> <br>
<br> <!-#include file = footer.inc->
</body> </html>