2)Reply.aspx:トピック表示と返信ページ
<%@ページ言語= c#enablessessionState = false debug = true%>
<%@ namespace = system%>をインポートします
<%@アセンブリname = System.Data%>
<%@ Import NameSpace = System.Data%>
<%@ namespace = system.data.ado%>をインポートします
<html> <head>
<title>新しいトピックを投稿します。</title>
<% - これらは、必要なインポートされたアセンブリと名前空間です - %>
<スクリプト言語= c#runat = server>
データセットDS、RS;
Datarow DR;
文字列postid;
public void page_load(オブジェクト送信者、eventargs e)
{
//ページが戻っているかどうかを確認します
if(!page.ispostback)
{
//クエリ文字列からPOSTIDを取得します
postid = request.params [postid];
if(postid!= null)
{
//データベース接続文字列。他のパスがある場合は、データベースファイルへのパスを変更します
//データベースファイルを保存しています
string [電子メール保護]プロバイダー= microsoft.jet.oledb.4.0; data source =+server.mappath(.// db // board.mdb);
//データベースに接続します
Adoconnection myConn = new Adoconnection(strconn);
//文字列newPostテーブルからレコードを選択します
string strcon = select subject、name、email、message、newpost from postid =+postid;
// AdodatasetCommandを設定します
adodatasetcommand mycommand = new adodatasetcommand(strcon、myconn);
ds = new DataSet();
//接続を開くことを忘れないでください
myconn.open();
//データセットを入力します
mycommand.filldataset(ds、newpost);
// [0]の位置に行を取得し、Datarowオブジェクトに保存します
//なぜ位置「0」にrowるのですか?指定されたPostIDを覚えている記録は1つしかないので!!
//なぜDatarowに入れるのですか? Datarowからのデータに簡単にアクセスできます
dr = ds.tables [newPost] .rows [0];
// datarowから件名を取得し、返信フォームの件名フィールドに設定します
subject.text = re:+dr [subject] .toString();
//返信テーブルから投稿への返信を選択します
strcon = select name、email、subject、message、from postid =+postid;
//返信テーブルに新しいAdodatasetCommandとデータセットを作成します
adodatasetcommand mycommand2 = new adodatasetcommand(strcon、myconn);
rs = new DataSet();
//データセットを入力します
mycommand2.filldataset(rs、Reply);
// newPostテーブルのビューフィールドを更新するコード
//特定のPostIDについて、テーブルからビューフィールドを選択します
strcon = postid = +postidのnewpostからビューを選択します。
//後でadodatareaderが欲しいので、ここでアドコマンドを作る
Adocommand Vicomm = new Adocommand(Strcon、MyConn);
Adodatareader Reader;
//ステートメントを実行し、Adodatareaderを作成します
vicomm.execute(out reader);
//最初のレコードを読む(覚えているレコードは1つだけです!)
reader.read();
//最初の列からint32値を取得します(読者に1つの列があり、上記の選択ステートメントを確認します)
int i = reader.getint32(0);
//ビューカウントを増やします
i ++;
reader.close();
//新しいビュー値でnewPostテーブルを更新します
strcon =更新newpost set views = +i +where(postid = +postid +);
//このステートメントに同じAdocommandオブジェクトを使用しているため、CommandTextプロパティを設定しているため
Vicomm.CommandText = strcon;
//このステートメントは出力がなくなるため、exectEnonquery()メソッドを使用します
vicomm.executenonquery();
//接続を閉じます
myconn.close();
}
}
}
//このメソッドは、送信ボタンがクリックされたときに呼び出されます
public void submit_click(object sender、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);
//投稿は新しい投稿ではなく、以前のメッセージへの返信であることを示すために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>
<テーブルボーダー= 0幅= 80%cellspacing = 2>
<tr class = fohead> <th width = 20%>著者名</th>
<th width = 80%>メッセージ</th> </tr>
<% - 以下、著者の名前をめぐる著者のメールをカプセル化しています
著者をクリックすると、電子メールが彼に送信されるように
また、私はデータベースからデータタイムを入手し、日付と時刻を個別に表示しています - %>
<tr class = folight> <td rowspan = 2 align = center> <%= <a href = mailto:+dr [email]+>+dr [name]+</a>%> <br>
<font size = 1> <%= dr [date] .toString()。todatetime()。toshortdatestring()%> <br>
<%= dr [date] .toString()。todatetime()。toshorttimestring()%> </font>
</td>
<td> <b>被験者:</b> <%= dr [subject]%> </td> </tr>
<tr class = folight>
<td> <pre> <%= dr [message]%> </pre> </td>
</tr>
<% - 元の投稿へのすべての返信を取得して表示する - %>
<%int no = rs.tables [Reply] .Rows.Count;
if(no> 0)
{
for(int j = 0; j <no; j ++)
{
datarow rd = rs.tables [Reply] .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()。todatetime()。toshorttimestring()%> </font>
</td>
<td> <pre> <%= rd [message]%> </pre> </td>
</tr>
<%
}
}
%>
</table>
</div>
<h3 align = center class = fodark> <a href = forum.aspx>ここをクリック</a>フォーラムに戻ります。
<br>上記の投稿に返信します。</h3>
<br>
<ASP:ラベル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 = folight>
<td>名前:</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 = email runat = server/> <font color =#ff0000>*</font> </td>
</tr>
<tr class = folight>
<td>件名:</td>
<td> <asp:textbox test = id = subject width = 200 runat = server/> <font color =#ff0000>*</font>
</td> </tr>
<tr class = folight>
<td>メッセージ:</td>
<td>
<asp:textbox id = message runat = server
列= 30行= 15 textMode = multiline> </asp:textbox> </td>
</tr>
<tr class = folight>
<td colspan = 2>
<asp:button class = fodark id = write onclick = submit_click runat = server text = submit> </asp:button> </td> </tr>
</table>
</form> <br>
<br> <! - #include file = footer.inc->
</body> </html>