2) Reply.aspx: หน้าการดูและการตอบกลับหัวข้อ
< %@ page language = c# enableSessionState = debug false = true %>
< %@ import namespace = system %>
< %@ ชื่อแอสเซมบลี = System.Data %>
< %@ import namespace = system.data %>
< %@ import namespace = system.data.ado %>
<html> <head>
<title> โพสต์หัวข้อใหม่ </title>
<%-นี่คือชุดประกอบที่นำเข้าและเนมสเปซที่จำเป็น-%>
<ภาษาสคริปต์ = c# runat = เซิร์ฟเวอร์>
ชุดข้อมูล DS, RS;
Datarow DR;
สตริง postid;
โมฆะสาธารณะ page_load (ผู้ส่งวัตถุ EventArgs E)
-
// ตรวจสอบว่าหน้านั้นโพสต์กลับมาหรือไม่
if (! page.ispostback)
-
// รับ postid จากสตริงแบบสอบถาม
postid = request.params [postid];
ถ้า (postid! = null)
-
// สตริงการเชื่อมต่อฐานข้อมูล เปลี่ยนพา ธ ไปเป็นไฟล์ฐานข้อมูลหากคุณมีเส้นทางอื่น ๆ
// คุณกำลังบันทึกไฟล์ฐานข้อมูลของคุณ
String [อีเมลป้องกัน] ผู้ให้บริการ = microsoft.jet.oLedb.4.0; แหล่งข้อมูล =+server.mappath (./////////////////////////////////////////////////-0 อันมาก
// ทำการเชื่อมต่อกับฐานข้อมูล
Adoconnection myconn = adoconnection ใหม่ (strconn);
// สตริงเพื่อเลือกระเบียนจากตาราง newpost
String strCon = เลือกหัวเรื่อง, ชื่อ, อีเมล, ข้อความ, datefrom newpost โดยที่ postid =+postid;
// ตั้งค่า adodatasetCommand
ADODATASETCOMMAND MYCOMMAND = ใหม่ ADODATASETCOMMAND (STRCON, MYCONN);
ds = ชุดข้อมูลใหม่ ();
// อย่าลืมเปิดการเชื่อมต่อ
myconn.open ();
// เติมชุดข้อมูล
MyCommand.FillDataset (DS, NEWPOST);
// รับแถวที่ตำแหน่ง '0' และเก็บไว้ในวัตถุ DataRow
// ทำไมแถวที่ตำแหน่ง '0'? เนื่องจากมีเพียงบันทึกเดียวกับ postid ที่กำหนดโปรดจำไว้ !!
// ทำไมต้องใส่ลงใน DataRow? มันง่ายต่อการเข้าถึงข้อมูลจาก datarow
dr = ds.tables [newpost] .rows [0];
// รับหัวเรื่องจาก DataRow และตั้งค่าในฟิลด์ Subject ของแบบฟอร์มการตอบกลับโพสต์
subject.text = Re:+DR [หัวเรื่อง] .toString ();
// เลือกการตอบกลับไปยังโพสต์จากตารางตอบกลับ
strcon = เลือกชื่อ, อีเมล, หัวเรื่อง, ข้อความ, วันที่จากการตอบกลับโดยที่ postid =+postid;
// สร้าง AdodatasetCommand ใหม่และชุดข้อมูลสำหรับตารางตอบกลับ
ADODATASETCOMMAND MYCOMMAND2 = ใหม่ ADODATASETCOMMAND (STRCON, MYCONN);
rs = ชุดข้อมูลใหม่ ();
// เติมชุดข้อมูล
MyCommand2.FillDataset (RS, ตอบกลับ);
// รหัสเพื่ออัปเดตฟิลด์มุมมองสำหรับตาราง newpost
// เลือกฟิลด์ Views จากตารางสำหรับ postid ที่กำหนด
strcon = เลือกมุมมองจาก newpost โดยที่ postid = +postid;
// สร้าง adocommand ที่นี่เนื่องจากเราต้องการ adodatareader ในภายหลัง
ADOCOMMAND VICOMM = ADOCOMMAND ใหม่ (StrCon, MyConn);
Adodatareader Reader;
// ดำเนินการคำสั่งและสร้าง adodatareader
vicomm.execute (out reader);
// อ่านบันทึกแรก (สามารถมีเพียงบันทึกเดียวจำได้!)
reader.read ();
// รับค่า INT32 จากคอลัมน์แรก (เรามีหนึ่งคอลัมน์ในเครื่องอ่านตรวจสอบคำสั่ง SELECT ด้านบน)
int i = reader.getInt32 (0);
// เพิ่มจำนวนมุมมอง
i ++;
reader.close ();
// อัปเดตตาราง newpost ด้วยค่ามุมมองใหม่
strCon = อัปเดต newpost set views = +i +โดยที่ (postid = +postid +);
// เนื่องจากเราใช้วัตถุ Adocommand เดียวกันสำหรับคำสั่งนี้ด้วยเพื่อตั้งค่าคุณสมบัติ CommandText
vicomm.CommandText = strCon;
// เนื่องจากคำสั่งนี้จะส่งผลให้ไม่มีการส่งออกเราจึงใช้วิธีการ ExecUtEnOnQuery ()
vicomm.executenonquery ();
// ปิดการเชื่อมต่อ
myconn.close ();
-
-
-
// วิธีนี้เรียกว่าเมื่อคลิกปุ่มส่ง
โมฆะสาธารณะ subment_click (ผู้ส่งวัตถุ, EventArgs E)
-
// รับ postid
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.text.encoding.utf8);
req+ = && message =+ system.web.httputility.urlencodeToString (message.text, system.text.encoding.utf8);
// ENCODE NO เพื่อระบุว่าโพสต์ไม่ใช่โพสต์ใหม่ แต่เป็นการตอบกลับข้อความก่อนหน้านี้
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 leftMargin = 0 rightMargin = 0 marginWidth = 0 marginHeight = 0>
<%-รวมไฟล์ส่วนหัว 'header.inc'-%>
<!-#include file = header.inc->
<br>
<div align = center>
<table border = 0 width = 80% cellspacing = 2>
<tr class = fohead> <th width = 20%> ชื่อผู้แต่ง </th>
<th width = 80%> ข้อความ </th> </tr>
<%- ด้านล่างฉันกำลังห่อหุ้มอีเมลของผู้เขียนผ่านชื่อผู้เขียน
ดังนั้นเมื่อคุณคลิกที่ผู้เขียนอีเมลจะถูกส่งถึงเขา
นอกจากนี้ฉันได้รับ datetime จากฐานข้อมูลและแสดงวันที่และเวลาแยกกัน -%>
<tr class = folight> <td rowspan = 2 align = center> < %= <a href = mailto:+dr [อีเมล]+>+dr [ชื่อ]+</a> %> <br>
<size font = 1> <%= dr [วันที่] .tostring (). todatetime (). toshortDatestring ()%> <br>
< %= dr [วันที่] .ToString (). TODATETIME (). TOSHORTTIMESTRING () %> </FONT>
</td>
<td> <b> หัวเรื่อง: </b> < %= dr [หัวเรื่อง] %> </td> </tr>
<tr class = folight>
<td> <pre> < %= dr [message] %> </pre> </td>
</tr>
<%-รับการตอบกลับทั้งหมดไปยังโพสต์ต้นฉบับและแสดง-%>
<% int no = rs.tables [ตอบกลับ] .rows.count;
ถ้า (ไม่> 0)
-
สำหรับ (int j = 0; j <ไม่; j ++)
-
DataRow RD = Rs.Tables [ตอบกลับ] .rows [J];
-
<tr class = fodark>
<td align = center> < %= <a href = mailto:+rd [อีเมล]+>+rd [ชื่อ]+</a> %> <br>
<ขนาด font = 1> <%= rd [วันที่] .tostring (). todateTime (). toshortDatestring ()%> <br>
< %= rd [วันที่] .ToString (). TODATETIME (). TOSHORTTIMESTRING () %> </FONT>
</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 = เซิร์ฟเวอร์ />
<form runat = เซิร์ฟเวอร์>
<table border = 0width = 80% allign = center>
<tr>
<td class = fohead colspan = 2> <b> ตอบกลับโพสต์ </b> </td>
</tr>
<tr class = folight>
<td> ชื่อ: </td>
<td> <asp: textbox text = id = name runat = เซิร์ฟเวอร์/> <font color =#ff0000>*</font> </td>
</tr>
<tr class = folight>
<td> อีเมล: </td>
<td> <asp: textbox text = id = อีเมล runat = เซิร์ฟเวอร์/> <font color =#ff0000>*</font> </td>
</tr>
<tr class = folight>
<td> หัวเรื่อง: </td>
<td> <asp: textbox test = id = ความกว้างหัวเรื่อง = 200 runat = เซิร์ฟเวอร์/> <font color =#ff0000>*</font>
</td> </tr>
<tr class = folight>
<td> ข้อความ: </td>
<td>
<asp: textbox id = message runat = เซิร์ฟเวอร์
คอลัมน์ = 30 แถว = 15 textMode = multiline> </asp: textbox> </td>
</tr>
<tr class = folight>
<td colspan = 2>
<ASP: BUTTON CLASS = FODARK ID = เขียน onClick = submit_click runat = server text = submit> </asp: ปุ่ม> </td> </tr>
</table>
</form> <br>
<br> <!-#include file = footer.inc->
</body> </html>