2) Responder.aspx: a página de visualização e resposta ao tópico
< %@ página de página = c# enableSessionState = false debug = true %>
< %@ Import Namespace = System %>
< %@ Nome da montagem = System.data %>
< %@ importar namespace = System.data %>
< %@ importar namespace = system.data.ado %>
<html> <head>
<title> Publique novo tópico. </ititure>
<%-estes são os assemblies e namespaces importados necessários-%>
<idioma do script = c# runat = servidor>
DataSet DS, RS;
Dataarow dr;
string postId;
public void Page_load (remetente de objeto, EventArgs e)
{
// Verifique se a página está posta
if (! Page.ispostback)
{
// Obtenha o pós -id da string de consulta
postId = request.params [postId];
if (postId! = nulo)
{
// string de conexão do banco de dados. Altere o caminho para o arquivo de banco de dados se você tiver algum outro caminho onde
// você está salvando seu arquivo de banco de dados
String [email protegido] provedor = microsoft.jet.oledb.4.0; fonte de dados =+server.mappath (.// db // board.mdb);
// Faça uma conexão com o banco de dados
adoconnection myconn = new adoconnection (strconn);
// string para selecionar os registros da tabela NewPost
string strcon = selecione Assunto, nome, email, mensagem, dataFrom NewPost onde postId =+postId;
// Defina um AdodatasetCommand
adodatasetCommand myCommand = new AdodatasetCommand (strcon, myconn);
ds = novo conjunto de dados ();
// nunca se esqueça de abrir a conexão
myconn.open ();
// preencha o conjunto de dados
myCommand.filldataset (DS, NewPost);
// Obtenha a linha na posição '0' e armazene -a em um objeto Dataarow
// Por que linha na posição '0'? Como só pode haver um registro com o postid dado lembre -se !!
// Por que colocar em um Datarow? é fácil de acessar dados de um datarow
dr = ds.Tables [NewPost] .Rows [0];
// Obtenha o assunto do Dataarow e configure -o no campo Assunto do Formulário de Resposta do Post Response
sujeito.Text = Re:+dr [sujeito] .ToString ();
// Selecione as respostas à postagem da tabela de resposta
strCon = selecione Nome, email, assunto, mensagem, data da resposta onde postId =+postId;
// Faça um novo AdodatasetCommand e DataSet para a tabela de resposta
adodatasetCommand myCommand2 = new AdodatasetCommand (strcon, myconn);
rs = new DataSet ();
// preencha o conjunto de dados
myCommand2.FillDataset (RS, resposta);
// Código para atualizar o campo de visualizações para a tabela de post novo
// Selecione o campo de visualizações da tabela para um determinado pós -IDID
strCon = Selecione as visualizações do NewPost onde postId = +PostId;
// Faça um adocommand aqui, pois queremos um Adodatarader mais tarde
adocommand vicomm = novo adocommand (strcon, myconn);
Adodatarader Reader;
// executa a declaração e crie um Adodatarader
vicomm.execute (Out Oader);
// Leia o primeiro registro (só pode haver um registro lembre -se!)
leitor.read ();
// Obtenha um valor int32 da primeira coluna (temos uma coluna no leitor, verifique a instrução SELECT acima)
int i = leitor.getInt32 (0);
// Aumente a contagem de visualizações
i ++;
leitor.close ();
// Atualize a tabela de post novo com o novo valor das visualizações
strCon = atualização do newPost Set Views = +i +onde (postID = +postID +);
// Como estamos usando o mesmo objeto Adocommand para esta declaração também para definir a propriedade CommandText
vicomm.CommandText = strCon;
// Como esta declaração resultará em nenhuma saída, usamos o método executenonQuery ()
vicomm.ExecutenonQuery ();
// Fechar a conexão
myconn.close ();
}
}
}
// Este método é chamado quando o botão Enviar é clicado
public void submit_click (remetente de objeto, EventArgs e)
{
// Obtenha o postid
postId = request.params [postId];
// prossiga apenas se todos os campos necessários forem preenchidos
if (página.isvalid && name.text! = && substet.text! = && email.text! =) {
DateTime agora = DateTime.now;
errmess.Text =;
// Temos que ligar para a página PostMessage.aspx com uma consulta para postar os dados no banco de dados.
// Portanto, temos que primeiro construir a consulta personalizada dos dados publicados pelo usuário
// também, pois estamos usando uma consulta, precisamos codificar os dados no formato 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+= && sujeito =+system.web.httputility.urlencodetostring (sujeito.text, system.text.encoding.utf8);
req+= && ip =+System.web.httputility.urlencodetostring (request.userhostaddress.toString (), System.text.encoding.utf8);
req+ = && date =+ System.web.httputility.urlencodetostring (agora.toString (), System.text.Encoding.utf8);
req+ = && message =+ System.web.httputility.urlencodetostring (message.text, system.text.encoding.utf8);
// codifica não para indicar que a postagem não é uma nova postagem, mas é uma resposta a uma mensagem anterior
req+ = && newPost =+ System.web.httputility.urlencodetoString (NO, System.Text.Encoding.utf8);
req+ = && previd =+ system.web.httputility.urlencodetostring (postId, system.text.encoding.utf8);
// Ligue para a página Postmessage com nossa consulta personalizada
Page.Navigate (PostMessage.aspx? + req);
}
outro
{
ErrMess.Text = Preencha todos os campos necessários! ;
}
}
</script>
<link href = mystyle.css type = text/css rel = stylesheet> </ad Head>
<Body topmargin = 0 leftMargin = 0 RightMargin = 0 marginwidth = 0 marginHeight = 0>
<%-inclua um arquivo de cabeçalho 'Header.inc'-%>
<!-#include file = header.inc->
<br>
<div align = Center>
<borda da tabela = 0 largura = 80% CellSpacacing = 2>
<tr class = fohead> <th width = 20%> Nome do autor </th>
<th width = 80%> mensagem </th> </tr>
<%- abaixo estou encapsulando o email do autor sobre o nome do autor
para que, quando você clique no autor, um e-mail é enviado para ele
Também estou recebendo o DateTime do banco de dados e exibindo a data e a hora separadamente -%>
<TR Class = Folight> <td lobspan = 2 align = Center> < %= <a href = Mailto:+dr [email]+>+dr [nome]+</a> %> <br>
<font size = 1> <%= dr [data] .ToString ()
< %= dr [data] .ToString (). TodateTime (). Toshorttimestring () %> </font>
</td>
<td> <b> Assunto: </b> < %= dr [sujeito] %> </td> </tr>
<TR Class = Folight>
<Td> <pre> < %= dr [mensagem] %> </pre> </td>
</tr>
<%-Obtenha todas as respostas à postagem original e mostre-lhes-%>
<% int no = rs.Tables [Responder] .Rows.Count;
se (não> 0)
{
for (int j = 0; j <não; j ++)
{
DATAROW RD = Rs.Tables [Responder] .Rows [J];
%>
<TR Class = Fodark>
<td align = Center> < %= <a href = Mailto:+rd [email]+>+rd [nome]+</a> %> <br>
<font size = 1> <%= rd [data] .ToString ()
< %= rd [data] .ToString (). TodateTime (). Toshorttimestring () %> </font>
</td>
<td> <pre> < %= rd [mensagem] %> </pre> </td>
</tr>
<%
}
}
%>
</tabela>
</div>
<h3 align = Center Class = Fodark> <a href = forum.aspx> Clique aqui </a> Para voltar ao fórum.
<br> Responder ao post acima. </h3>
<br>
<asp: rótulo id = errmess text = style = cor:#ff0000 runat = server />
<form runat = server>
<borda da tabela = 0Width = 80% align = Center>
<tr>
<td class = fohead colspan = 2> <b> Responder ao post </b> </td>
</tr>
<TR Class = Folight>
<td> Nome: </td>
<td> <asp: textbox text = id = nome runat = server/> <font color =#ff0000>*</font> </td>
</tr>
<TR Class = Folight>
<td> e-mail: </td>
<td> <asp: textbox text = id = email runat = server/> <font color =#ff0000>*</font> </td>
</tr>
<TR Class = Folight>
<td> Assunto: </td>
<Td> <asp: textbox teste = id = width = 200 runat = server/> <font color =#ff0000>*</font>
</td> </tr>
<TR Class = Folight>
<td> mensagem: </td>
<Td>
<asp: textbox id = mensagem runat = servidor
colunas = 30 linhas = 15 textmode = multiline> </asp: textbox> </td>
</tr>
<TR Class = Folight>
<td colspan = 2>
er
</tabela>
</morm> <br>
<br> <!-#include file = Footer.inc->
</body> </html>