2) الرد. aspx: صفحة عرض الموضوع والرد
<٪@ page language = c# enlabesessionState = false debug = true ٪>
<٪@ استيراد مساحة الاستيراد = النظام ٪>
<٪@ اسم التجميع = system.data ٪>
<٪@ استيراد المساحة = system.data ٪>
<٪@ استيراد المساحة = system.data.ado ٪>
<html> <head>
<title> نشر موضوع جديد. </title>
<٪-هذه هي التجميعات المستوردة ومساحات الأسماء المطلوبة-٪>
<لغة البرنامج النصي = c# runat = server>
Dataset DS ، RS ؛
DATAROW DR ؛
سلسلة postid.
public void page_load (مرسل الكائن ، eventargs e)
{
// تحقق مما إذا كانت الصفحة تنشر مرة أخرى
إذا (! page.ispostback)
{
// احصل على postid من سلسلة الاستعلام
postid = request.params [postid] ؛
إذا (postid! = فارغة)
{
// سلسلة اتصال قاعدة البيانات. قم بتغيير المسار إلى ملف قاعدة البيانات إذا كان لديك مسار آخر حيث
// تقوم بحفظ ملف قاعدة البيانات الخاص بك
String [البريد الإلكتروني المحمي] Provider = microsoft.jet.oledb.4.0 ؛ data source =+server.mappath (.// db // board.mdb) ؛
// قم بالاتصال بقاعدة البيانات
Adoconnection myconn = adoconnection جديد (strconn) ؛
// String لتحديد السجلات من جدول NewPost
String Strcon = حدد الموضوع ، الاسم ، البريد الإلكتروني ، الرسالة ، DateFrom NewPost حيث postid =+postid ؛
// تعيين AdodatasetCommand
adodatasetCommand myCommand = new AdodatAsetCommand (Strcon ، myconn) ؛
ds = مجموعة بيانات جديدة () ؛
// لا تنسى أبدًا فتح الاتصال
myconn.open () ؛
// ملء مجموعة البيانات
MyCommand.fillDataset (DS ، NewPost) ؛
// احصل على الصف في الموضع "0" وقم بتخزينه في كائن dataRow
// لماذا الصف في الموضع "0"؟ لأنه لا يمكن أن يكون هناك سجل واحد إلا مع تذكر postid المعطى !!
// لماذا وضعت في dataRow؟ من السهل الوصول إلى البيانات من dataRow
DR = DS.Tables [newPost] .Rows [0] ؛
// احصل على الموضوع من dataRow وقم بإعداده في حقل موضوع نموذج الرد
thision.text = re:+dr [thision] .toString () ؛
// حدد الردود على المنشور من جدول الرد
strcon = حدد الاسم ، البريد الإلكتروني ، الموضوع ، رسالة ، تاريخ من الرد حيث postid =+postid ؛
// قم بعمل مجموعة جديدة من AdodatAsetCommand ومجموعة بيانات لجدول الرد
adodatasetCommand myCommand2 = جديد adodatasetCommand (strcon ، myconn) ؛
rs = مجموعة بيانات جديدة () ؛
// ملء مجموعة البيانات
MyCommand2.fillDataset (Rs ، الرد) ؛
// رمز لتحديث حقل المشاهدات لجدول NewPost
// حدد حقل المشاهدات من الجدول للحصول على postid معين
strcon = حدد طرق عرض من newPost حيث postid = +postid ؛
// اصنع adocommand هنا لأننا نريد adodatareader لاحقًا
Adocommand Vicomm = New Adocommand (Strcon ، Myconn) ؛
قارئ Adodatareader ؛
// تنفيذ البيان وإنشاء adodatareader
Vicomm.execute (out reader) ؛
// اقرأ السجل الأول (يمكن أن يكون هناك سجل واحد فقط تذكر!)
reader.read () ؛
// احصل على قيمة int32 من العمود الأول (لدينا عمود واحد في القارئ ، تحقق من عبارة تحديد أعلاه)
int i = reader.getInt32 (0) ؛
// زيادة عدد المشاهدات
i ++ ؛
reader.close () ؛
// قم بتحديث جدول NewPost بقيمة طرق العرض الجديدة
strcon = تحديث views newPost Set Views = +i +where (postID = +postid +) ؛
// نظرًا لأننا نستخدم نفس كائن Adocommand لهذا البيان أيضًا لتعيين خاصية CommandText
Vicomm.CommandText = strcon ؛
// نظرًا لأن هذا البيان لن يؤدي إلى عدم وجود إخراج ، فإننا نستخدم طريقة ExecuteNOnquery ()
Vicomm.executenonquery () ؛
// أغلق الاتصال
myconn.close () ؛
}
}
}
// يتم استدعاء هذه الطريقة عند النقر فوق الزر
public void submit_click (مرسل الكائن ، eventargs e)
{
// الحصول على postid
postid = request.params [postid] ؛
// تابع فقط إذا تم ملء جميع الحقول المطلوبة
if (page.isvalid && name.text! = && thision.text! = && email.text! =) {
DateTime الآن = dateTime.Now ؛
errmess.text = ؛
//يتعين علينا الاتصال بصفحة postmessage.aspx مع استعلام لنشر البيانات إلى قاعدة البيانات.
// وبالتالي يتعين علينا أولاً إنشاء الاستعلام المخصص من البيانات التي نشرها المستخدم
// أيضًا نظرًا لأننا نستخدم استعلامًا ، علينا تشفير البيانات بتنسيق UTF8
String req = name =+ system.web.httputily.urlencodetoString (name.text ، system.text.encoding.utf8) ؛
req+ = && البريد الإلكتروني =+ system.web.httputily.urlencodetoString (البريد الإلكتروني. text ، system.text.encoding.utf8) ؛
req+= && sustical =+system.web.httputily.urlencodetoString (thision.text ، system.text.encoding.utf8) ؛
req+= && ip =+system.web.httputily.urlencodetoString (request.userhostaddress.toString () ، system.text.encoding.utf8) ؛
req+ = && date =+ system.web.httputily.urlencodetoString (now.toString () ، system.text.encoding.utf8) ؛
req+ = && message =+ system.web.httputily.urlencodetoString (message.text ، system.text.encoding.utf8) ؛
// encode no للإشارة إلى أن المنشور ليس منشورًا جديدًا ولكنه رد على رسالة سابقة
req+ = && newpost =+ system.web.httputily.urlencodetoString (no ، system.text.encoding.utf8) ؛
req+ = && previd =+ system.web.httputily.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>
<الجدول الحدود = 0 عرض = 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 [email]+>+dr [name]+</a> ٪> <br>
<font size = 1> <٪ = dr [date] .toString ()
<٪ = dr [date] .toString ()
</td>
<td> <b> الموضوع: </b> <٪ = dr [موضوع] ٪> </td> </tr>
<tr class = folight>
<td> <pre> <٪ = dr [message] ٪> </pre> </td>
</r>
<٪-احصل على جميع الردود على المنشور الأصلي وإظهارها-٪>
<٪ int no = rs.tables [الرد] .rows.count ؛
إذا (لا> 0)
{
لـ (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 ()
<٪ = rd [date] .toString ()
</td>
<td> <pre> <٪ = rd [message] ٪> </pre> </td>
</r>
<٪
}
}
٪>
</table>
</div>
<h3 align = center class = fodark> <a href = forum.aspx> انقر هنا </a> للذهاب إلى العودة إلى المنتدى.
<br> الرد على المنشور أعلاه. </h3>
<br>
<asp: معرف التسمية = errmess text = style = color:#ff0000 runat = server />
<form runat = server>
<جدول الحدود = 0width = 80 ٪ محاذاة = المركز>
<tr>
<td class = fohead colspan = 2> <b> الرد على المنشور </b> </td>
</r>
<tr class = folight>
<td> الاسم: </td>
<td> <asp: textbox text = id = name runat = server/> <font color =#ff0000>*</font> </td>
</r>
<tr class = folight>
<td> البريد الإلكتروني: </td>
<td> <asp: textbox text = id = البريد الإلكتروني runat = server/> <font color =#ff0000>*</font> </td>
</r>
<tr class = folight>
<td> الموضوع: </td>
<td> <asp: textbox test = id = عرض الموضوع = 200 runat = server/> <font color =#ff0000>*</font>
</td> </tr>
<tr class = folight>
<td> الرسالة: </td>
<td>
<ASP: معرف TextBox = Message Runat = Server
الأعمدة = 30 صفوف = 15 TextMode = Multiline> </ASP: TextBox> </td>
</r>
<tr class = folight>
<td colspan = 2>
<asp: button class = fodark id = write onClick = submit_click runat = server text = submit> </asp: button> </td> </r>
</table>
</form> <br>
<br> <!-#include file = footer.inc->
</body> </html>