2) Répondre.aspx: la page de visualisation et de réponse du sujet
<% @ Page Language = C # ActiveSesSesState = False Debug = True%>
<% @ Importer namespace = System%>
<% @ assembly name = System.Data%>
<% @ Importer namespace = System.Data%>
<% @ Importer namespace = System.data.ado%>
<html> <adref>
<Title> Publier un nouveau sujet. </TITME>
<% - Ce sont les assemblées et les espaces de noms importés nécessaires -%>
<Script Language = C # runat = Server>
Dataset DS, RS;
datarow dr;
String postid;
public void page_load (expéditeur d'objet, EventArgs e)
{
// Vérifiez si la page est publiée
if (! Page.ispostback)
{
// obtient le postid à partir de la chaîne de requête
postid = request.params [postid];
if (postid! = null)
{
// chaîne de connexion de la base de données. Modifiez le chemin d'accès au fichier de base de données si vous avez un autre chemin où
// Vous enregistrez votre fichier de base de données
String [Email Protected] Provider = Microsoft.Jet.OledB.4.0; Data Source = + Server.Mappath (.// db // board.mdb);
// établit une connexion à la base de données
Adoconnection MyConn = New Adoconnection (StrConn);
// chaîne pour sélectionner les enregistrements dans la table newpost
String strCon = SELECT Sujet, nom, e-mail, message, date de la position NEWPOST WHERE POSTID = + POSTID;
// Définit un adodatasetCommand
AdodataSetCommand MyCommand = new AdodataSetCommand (StrCon, MyConn);
ds = new DataSet ();
// N'oubliez jamais d'ouvrir la connexion
myConn.open ();
// Remplissez l'ensemble de données
myCommand.FillDataset (DS, newpost);
// Obtenez la ligne en position «0» et stockez-la dans un objet Datarow
// Pourquoi ramer en position '0'? Puisqu'il ne peut y avoir qu'un seul enregistrement avec le Postid donné, rappelez-vous !!
// Pourquoi mettre dans un Datarow? Il est facile d'accéder aux données à partir d'un Datarow
dr = ds.tables [newPost] .Rows [0];
// Obtenez le sujet de la datarow et configurez-le dans le champ Sujet du formulaire de réponse post
sujet.Text = re: + dr [sujet] .toString ();
// Sélectionnez les réponses à la publication dans la table de réponse
strCon = SELECT Name, Email, Subject, Message, date de la réponse où postid = + postid;
// Faire un nouveau AdodatasetCommand et un ensemble de données pour la table de réponse
adodatasetCommand myCommand2 = new AdodataSetCommand (strCon, myConn);
rs = nouveau ensemble de données ();
// Remplissez l'ensemble de données
myCommand2.FillDataset (RS, réponse);
// Code pour mettre à jour le champ de vues pour la table Newpost
// Sélectionnez le champ de vues dans le tableau pour un poste donné
strCon = sélectionnez les vues dans newpost où postid = + postid;
// Faire un adocommand ici car nous voulons un adodatareader plus tard
AdoCommand Vicomm = New Adocommand (StrCon, MyConn);
Lecteur AdodataReader;
// Exécuter l'instruction et créer un adodataReader
vicomm.execute (lecteur out);
// Lire le premier enregistrement (il ne peut y avoir qu'un seul disque n'oubliez pas!)
Reader.read ();
// Obtenez une valeur INT32 à partir de la première colonne (nous avons une colonne dans le lecteur, vérifiez l'instruction SELECT ci-dessus)
int i = reader.getInt32 (0);
// augmenter le nombre de vues
i ++;
Reader.Close ();
// Mette à jour la table Newpost avec la valeur de nouvelles vues
strCon = update newPost set Views = + i + where (postid = + postid +);
// Puisque nous utilisons le même objet Adocommand pour cette instruction aussi pour définir la propriété CommandText
vicomm.commandText = strCon;
// Étant donné que cette instruction entraînera aucune sortie, nous utilisons la méthode ExecuteNOnQuery ()
vicomm.executenonQuery ();
// Fermez la connexion
myConn.close ();
}
}
}
// Cette méthode est appelée lorsque le bouton Soumettre est cliqué
public void soumed_click (expéditeur d'objet, EventArgs e)
{
// Obtenez le postid
postid = request.params [postid];
// procéder uniquement si tous les champs requis sont remplis
if (page.isvalid && name.text! = && sujet
DateTime Now = DateTime.now;
errMess.text =;
// Nous devons appeler la page postMessage.aspx avec une requête pour publier les données dans la base de données.
// Par conséquent, nous devons d'abord créer la requête personnalisée à partir des données publiées par l'utilisateur
// De plus, depuis que nous utilisons une requête, nous devons coder les données au format UTF8
String req = name = + system.web.httputility.urlencodetoString (name.text, system.text.encoding.utf8);
req + = && email = + System.web.httputility.urlencodetoString (email.text, system.text.encoding.utf8);
req + = && sujet = + System.web.httputility.urlencodetoString (subder.Text, System.Text.Encoding.Utf8);
req + = && ip = + system.web.httputility.urlencodetoString (request.userhostaddress.toString (), system.text.encoding.utf8);
req + = && date = + system.web.httputility.urlencodetoString (now.toString (), system.text.encoding.utf8);
req + = && message = + system.web.httputility.urlencodetoString (message.Text, System.Text.Encoding.Utf8);
// Encode non pour indiquer que le message n'est pas un nouveau message mais c'est une réponse à un message antérieur
req + = && newpost = + System.web.httputility.urlencodetoString (no, system.text.encoding.utf8);
req + = && previd = + system.web.httputility.urlencodetoString (postid, system.text.encoding.utf8);
// appelle la page postmessage avec notre requête personnalisée
page.navigate (postMessage.aspx? + req);
}
autre
{
ErrMess.Text = Remplissez tous les champs requis! ;
}
}
</cript>
<link href = mystyle.css type = text / css rel = Stylesheet> </ head>
<Body topMargin = 0 LeftMargin = 0 droite-margin = 0 marginwidth = 0 marginheight = 0>
<% - Inclure un fichier d'en-tête 'en-tête.inc' -%>
<! - #include file = header.inc ->
<br>
<div align = Center>
<Table Border = 0 Width = 80% CellSpace = 2>
<tr class = Fohead> <th largeur = 20%> Nom de l'auteur </th>
<th largeur = 80%> Message </th> </tr>
<% - Ci-dessous, je résume l'e-mail de l'auteur sur le nom de l'auteur
de sorte que lorsque vous cliquez sur l'auteur, un e-mail lui est envoyé
J'obtiens également la DateTime à partir de la base de données et affiche la date et l'heure séparément -%>
<tr class = folight> <td Rowspan = 2 align = Center> <% = <a href = mailto: + dr [e-mail] +> + dr [name] + </a>%> <br>
<font size = 1> <% = dr [date] .toString (). todatetime (). toshortdatestring ()%> <br>
<% = dr [date] .toString (). todateTime (). toshortTimestring ()%> </font>
</td>
<td> <b> Sujet: </b> <% = dr [sujet]%> </td> </tr>
<tr class = folight>
<td> <pre> <% = dr [message]%> </pre> </td>
</tr>
<% - Obtenez toutes les réponses au message d'origine et montrez-les -%>
<% int no = Rs.Tables [Répondre] .Rows.Count;
si (non> 0)
{
pour (int j = 0; j <non; j ++)
{
Datarow Rd = Rs.Tables [Répondre] .Rows [J];
%>
<tr class = fodark>
<td align = Center> <% = <a href = Mailto: + rd [e-mail] +> + rd [nom] + </a> %> <br>
<font size = 1> <% = rd [date] .toString (). todateTime (). toshortDateString ()%> <br>
<% = rd [date] .toString (). todatetime (). toshortTimestring ()%> </font>
</td>
<td> <pre> <% = rd [message]%> </pre> </td>
</tr>
<%
}
}
%>
</ table>
</div>
<H3 Align = Center Class = Fodark> <a href = forum.aspx> Cliquez ici </a> pour revenir à Forum.
<br> Répondre au post ci-dessus. </h3>
<br>
<asp: étiquette id = errMess text = style = couleur: # ff0000 runat = server />
<form runat = server>
<Table Border = 0Width = 80% Align = Center>
<tr>
<td class = fohead colspan = 2> <b> Répondre au post </b> </td>
</tr>
<tr class = folight>
<td> Nom: </td>
<td> <asp: textbox text = id = name runat = server /> <font color = # ff0000> * </font> </td>
</tr>
<tr class = folight>
<td> e-mail: </td>
<td> <asp: textbox text = id = e-mail runat = server /> <font color = # ff0000> * </font> </td>
</tr>
<tr class = folight>
<TD> Sujet: </td>
<td> <asp: TextBox Test = id = Subject Width = 200 runat = server /> <font color = # ff0000> * </font>
</td> </tr>
<tr class = folight>
<td> Message: </td>
<TD>
<asp: textbox id = message runat = server
colonnes = 30 lignes = 15 textMode = Multiline> </ Asp: TextBox> </td>
</tr>
<tr class = folight>
<td colspan = 2>
<asp: Button class = fodark id = write onclick = soume_click runat = server text = soumed> </ asp: bouton> </td> </tr>
</ table>
</ form> <br>
<br> <! - #include file = footer.inc ->
</ body> </html>