2) Ответить.aspx: страница просмотра и ответа темы
< %@ page language = c# enabsessestate = false debug = true %>
< %@ Импорт имен пространство = система %>
< %@ assbly name = system.data %>
< %@ import namespace = system.data %>
< %@ import namespace = system.data.ado %>
<html> <голова>
<title> опубликовать новую тему. </title>
<%-Это импортные сборы и необходимые пространства имен-%>
<script language = c# runat = server>
Набор данных DS, RS;
DataRow DR;
Строка последа;
public void page_load (отправитель объекта, Eventargs E)
{
// Проверьте, если страница отправляется обратно
if (! Page.ispostback)
{
// Получить постид из строки запроса
postid = request.params [postid];
if (postid! = null)
{
// Строка подключения к базе данных. Измените путь к файлу базы данных, если у вас есть какой -то другой путь, где
// вы сохраняете файл базы данных
String [Email Protected] Provider = microsoft.jet.oledb.4.0; Data Source =+server.mappath (.// db // poard.mdb);
// Сделать соединение с базой данных
AdoConnection myConn = новый AdoConnection (strConn);
// строка, чтобы выбрать записи в таблице NewPost
string strcon = select toot, имя, электронная почта, сообщение, дата от Newpost, где postid =+postid;
// Установить AdodatasetCommand
adodatasetcommand mycommand = new adodatasetcommand (strcon, myconn);
DS = новый набор данных ();
// никогда не забывайте открыть соединение
myconn.open ();
// заполнить набор данных
mycommand.filldataset (ds, newpost);
// Получить строку в позиции «0» и хранить ее в объекте Datarow
// Зачем строю в позиции '0'? Поскольку может быть только одна запись с данным постидом, помните !!
// Зачем вкладывать в данные? его легко получить доступ к данным из DataRow
dr = ds.tables [newpost] .rows [0];
// Получить тему из DataRow и установить его в поле предмета Post Ответить
субъект.text = re:+dr [субъект] .toString ();
// Выберите ответы на сообщение в таблице ответов
STRCON = SELECT Имя, Электронная почта, Тема, Сообщение, Дата Ответ, где postid =+postid;
// Сделать новый AdodatasetCommand и набор данных для таблицы ответов
adodatasetcommand mycommand2 = new adodatasetcommand (strcon, myconn);
rs = new DataSet ();
// заполнить набор данных
mycommand2.filldataset (rs, ответ);
// код для обновления поля представлений для таблицы NewPost
// Выберите поле представлений в таблице для данного постида
STRCON = SELECT Views из NewPost, где postid = +postid;
// Сделайте здесь адокоммерду, так как мы хотим, чтобы Adodatareader позже
adocommand vicomm = new adocommand (strcon, myconn);
Adodatareader Reader;
// выполнить оператор и создать Adodatareader
vicomm.execute (out Reader);
// Читать первую запись (там может быть только одна запись!)
reader.read ();
// Получить значение Int32 из первого столбца (у нас есть один столбец в считывателе, проверьте оператор SELECT выше)
int i = reader.getint32 (0);
// Увеличение подсчета взглядов
i ++;
reader.close ();
// Обновление таблицы NewPost с новым значением представлений
strcon = update newpost set views = +i +where (postid = +postid +);
// Поскольку мы используем тот же объект Adocommand для этого оператора, чтобы установить свойство CommandText
vicomm.commandtext = strcon;
// Поскольку этот оператор не приведет к выводу, мы используем метод executeNoNquery ()
vicomm.executenonquery ();
// закрыть соединение
myconn.close ();
}
}
}
// Этот метод вызывается, когда кнопка отправки нажимается
public void opper_click (отправитель объекта, Eventargs E)
{
// Получить постид
postid = request.params [postid];
// Продолжайте только в том случае, если все необходимые поля заполнены
if (page.isvalid && name.text! = && subject.text! = && email.text! =) {
DateTime Now = dateTime.now;
errmess.text =;
// Мы должны позвонить на страницу postmessage.aspx с запросом, чтобы разместить данные в базу данных.
// Следовательно, мы должны сначала построить пользовательский запрос из данных, опубликованных пользователем
// также, поскольку мы используем запрос, мы должны кодировать данные в формат 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+= && subject =+system.web.httputility.urlencodetoString (subject.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.ext.encoding.utf8);
req+ = && message =+ system.web.httputility.urlencodetostring (message.text, system.text.encoding.utf8);
// кодировать нет, чтобы указать, что пост не является новым постом, а ответ на более раннее сообщение
req+ = && newpost =+ system.web.httputility.urlencodetoString (no, system.text.encoding.utf8);
req+ = && previd =+ system.web.httputility.urlencodetoString (postid, system.text.encoding.utf8);
// Позвоните на страницу Postmessage с нашим пользовательским запросом
page.navigate (postmessage.aspx? + req);
}
еще
{
errmess.text = заполнить все необходимые поля! ;
}
}
</script>
<link href = myStyle.css type = text/css rel = styleSheet> </head>
<body topmargin = 0 Levermargin = 0 rightmargin = 0 marginwidth = 0 marginheight = 0>
<%-включить файл заголовка 'header.inc'-%>
<!-#include file = header.inc->
<br>
<div align = center>
<таблица границы = 0 ширина = 80% сотовой связи = 2>
<tr class = fohead> <th width = 20%> имя автора </th>
<th width = 80%> Сообщение </th> </tr>
<%- Ниже я инкапсулирую электронное письмо автора по имени автора
так что когда вы нажимаете на автора, отправляется электронное письмо
Также я получаю DateTime из базы данных и отображаю дату и время отдельно -%>
<tr class = flight> <td rowspan = 2 align = center> < %= <a href = mailto:+dr [email]+>+dr [name]+</a> %> <br>
<font size = 1> <%= dr [date] .tostring ()
< %= dr [date] .toString ()
</td>
<Td> <b> Субъект: </b> < %= dr [субъект] %> </td> </tr>
<tr class = flight>
<td> <pre> < %= dr [сообщение] %> </pre> </td>
</tr>
<%-Получите все ответы на оригинальный пост и покажите их-%>
<% int no = rs.tables [ответ] .rows.count;
if (нет> 0)
{
for (int j = 0; j <no; j ++)
{
datarow rd = rs.tables [ответ] .Rows [j];
%>
<tr class = fodark>
<td align = center> < %= <a href = mailto:+rd [email]+>+rd [name]+</a> %> <br>
<font size = 1> <%= rd [date] .toString (). todateTime (). ToshortDatestring ()%> <br>
< %= rd [date] .toString ()
</td>
<td> <pre> < %= rd [сообщение] %> </pre> </td>
</tr>
<%
}
}
%>
</table>
</div>
<h3 align = center class = fodark> <a href = forum.aspx> Нажмите здесь </a>, чтобы перейти на форум.
<br> Ответьте на приведенный выше пост. </h3>
<br>
<ASP: Label ID = Errmess Text = style = color:#ff0000 runat = server />
<form runat = server>
<таблица границы = 0width = 80% align = center>
<tr>
<td class = fohead colspan = 2> <b> Ответьте на пост </b> </td>
</tr>
<tr class = flight>
<TD> Имя: </TD>
<TD> <ASP: TextBox Text = ID = имя Runat = Server/> <font color =#ff0000>*</font> </td>
</tr>
<tr class = flight>
<Td> электронная почта: </td>
<TD> <ASP: TextBox Text = ID = Email Runat = Server/> <font color =#ff0000>*</font> </td>
</tr>
<tr class = flight>
<TD> Тема: </TD>
<TD> <ASP: TEXTBOX TEST = ID = ширина субъекта = 200 Runat = Server/> <font color =#ff0000>*</font>
</td> </tr>
<tr class = flight>
<TD> Сообщение: </TD>
<Td>
<ASP: TextBox ID = Message Runat = Server
Columns = 30 Rows = 15 TextMode = Multiline> </asp: TextBox> </td>
</tr>
<tr class = flight>
<td colspan = 2>
<ASP: Button Class = FODARK ID = write OnClick = OPPIT_CLICK RUNAT = SERVER TEXT = OPED> </ASP: Кнопка> </TD> </tr>
</table>
</form> <br>
<br> <!-#include file = cooler.inc->
</body> </html>