留言板分三個模塊:列出留言列表、顯示詳細內容、發表留言
notepage.cs
namespace notpage
{
using System;
using System.Data.SQL ;
using System.Data ;
using System.Collections ;
/// <summary>
/// Summary description for notepage.
/// </summary>public class notepage
{
//私有變量
private int n_intID ; //ID編號
private string n_strTitle ; //主題
private string n_strAuthor ; //留言人
private string n_strContent ; //留言內容
private DateTime n_dateTime ; //留言時間
//屬性
public int ID
{get
{return n_intID ;
}
set
{n_intID = value;
}}
public string Title
{get
{return n_strTitle ;
}
set
{n_strTitle = value;
}
}
public string Author
{get
{return n_strAuthor ;
}
set
{n_strAuthor = value ;
}
}
public string Content
{get
{return n_strContent ;
}
set
{n_strContent = value ;
}}
public DateTime adddate
{get
{return n_dateTime;
}
set
{n_dateTime = value;
}
}
//構造函數
public notepage()
{
//
// TODO: Add Constructor Logic here
//
this.n_intID = 0 ;
this.n_strTitle = "" ;
this.n_strAuthor = "" ;
this.n_strContent = "" ;
this.n_dateTime = System.DateTime.Now;
}
/// <summary>
///
/// 取得留言的內容
///
/// </summary>
/// <param name="a_intID"> </param>
public notepage GetTopic(int a_intID)
{
//
// TODO: Add Constructor Logic here
//
//讀取數據庫
myconn myConn = new myconn();
SQLCommand myCommand = new SQLCommand() ;
myCommand.ActiveConnection = myConn ;
myCommand.CommandText = "n_GetTopicInfo" ; //調用存儲過程
myCommand.CommandType = CommandType.StoredProcedure ;
myCommand.Parameters.Add(new SQLParameter("@a_intTopicID" , SQLDataType.Int)) ;
myCommand.Parameters["@a_intTopicID"].Value = a_intID ;
notepage objNp = new notepage();
try
{
myConn.Open() ;
SQLDataReader myReader ;
myCommand.Execute(out myReader) ;
if (myReader.Read())
{
objNp.ID = (int)myReader["ID"] ;
objNp.Title = (string)myReader["Title"] ;
objNp.Author = (string)myReader["Author"] ;
objNp.Content = (string)myReader["Content"];
objNp.adddate = (DateTime)myReader["adddate"];
}
//清場
myReader.Close();
myConn.Close() ;
}catch(Exception e)
{throw(new Exception("取貼子失敗:" + e.ToString())) ;
}
return objNp;
}
/// <summary>
///
/// 目的:將留言的內容入庫
///
/// 利用構造函數來傳遞信息
///
/// </summary>
/// <param name="n_Topic"> </param>
public bool AddTopic(notepage n_Topic)
{
//
// TODO: Add Constructor Logic here
//
//讀取數據庫
myconn myConn = new myconn();
SQLCommand myCommand = new SQLCommand() ;
myCommand.ActiveConnection = myConn ;
myCommand.CommandText = "n_addTopic" ; //調用存儲過程
myCommand.CommandType = CommandType.StoredProcedure ;
myCommand.Parameters.Add(new SQLParameter("@a_strTitle" , SQLDataType.VarChar,100)) ;
myCommand.Parameters["@a_strTitle"].Value = n_Topic.Title ;
myCommand.Parameters.Add(new SQLParameter("@a_strAuthor" , SQLDataType.VarChar,50)) ;
myCommand.Parameters["@a_strAuthor"].Value = n_Topic.Author ;
myCommand.Parameters.Add(new SQLParameter("@a_strContent" , SQLDataType.VarChar,2000)) ;
myCommand.Parameters["@a_strContent"].Value = n_Topic.Content ;
try
{
myConn.Open() ;
myCommand.ExecuteNonQuery() ;
//清場
myConn.Close() ;
}
catch(Exception e)
{throw(new Exception("取貼子失敗:" + e.ToString())) ;
}
return true;
}
/// <summary>
/// 取的貼子列表
/// </summary>
/// <remarks>
/// 返回一個Topic數組
/// </remarks>
public ArrayList GetTopicList()
{
//定義一個forum數組做為返回值
ArrayList arrForumList =new ArrayList() ;
//從數據庫中讀取留言列表
myconn myConn = new myconn();
SQLCommand myCommand = new SQLCommand() ;
myCommand.ActiveConnection = myConn ;
myCommand.CommandText = "n_GetTopicList" ; //調用存儲過程
myCommand.CommandType = CommandType.StoredProcedure ;
try
{myConn.Open() ;
SQLDataReader myReader ;
myCommand.Execute(out myReader) ;
for (int i = 0 ; myReader.Read() ; i++)
{
notepage objItem = new notepage() ;
objItem.ID = myReader["ID"].ToString().ToInt32() ;
objItem.Title = myReader["Title"].ToString() ;
objItem.Author = myReader["Author"].ToString() ;
objItem.adddate = myReader["adddate"].ToString().ToDateTime();
objItem.Content = myReader["Content"].ToString();
arrForumList.Add(objItem) ;
}
//清場
myReader.Close();
myConn.Close() ;
}
catch(SQLException e)
{
throw(new Exception("數據庫出錯:" + e.ToString())) ;
//return null ;
}
return arrForumList ;
}}}
myconn.cs
namespace notpage
{
using System;
using System.Data.SQL ;</P><P> /// <summary>
/// Summary description for myconn.
/// </summary>
public class myconn:System.Data.SQL.SQLConnection
{
private void InitializeComponent ()
{}
public myconn()
{
//
// TODO: Add Constructor Logic here
//
this.Database = "back" ;
this.DataSource = "LUOCHANG" ;
this.UserID = "sa" ;
this.Password = "" ;
}}}
添加留言addTopic.aspx
<%@ Page language="c#" Codebehind="AddTopic.cs" AutoEventWireup="false" Inherits="notpage.AddTopic" %>
<html><head>
<meta content="Microsoft Visual Studio 7.0" name=GENERATOR>
<meta content=C# name=CODE_LANGUAGE></head>
<body>
<form method=post runat="server">
<table cellSpacing=1 cellPadding=1 width="88%" border=0>
<tr>
<td>留言主題:</TD>
<td><asp:textbox id=txtTitle runat="server" maxlength="80" columns="65"></asp:textbox></TD></TR>
<tr>
<td>姓名:</TD>
<td><asp:textbox id=txtAuthor runat="server" maxlength="40" columns="20"></asp:textbox></TD></TR>
<tr>
<td>留言內容</TD>
<td><asp:textbox id=txtContent runat="server" maxlength="2000" columns="50" rows="20" TextMode="MultiLine"></asp:textbox><asp:button
id=btnSubmit runat="Server"
text="確認"></asp:button></TD></TR></TABLE></FORM>
</body></html></P><P>對應的cs
namespace notpage
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;</P><P> /// <summary>
/// Summary description for AddTopic.
/// </summary>
public class AddTopic : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtContent;
protected System.Web.UI.WebControls.TextBox txtAuthor;
protected System.Web.UI.WebControls.TextBox txtTitle;
protected System.Web.UI.WebControls.Button btnSubmit;
public AddTopic()
{
Page.Init += new System.EventHandler(Page_Init);
}</P><P> protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//
// Evals true first time browser hits the page
//
}
}</P><P> protected void Page_Init(object sender, EventArgs e)
{
//
// CODEGEN: This call is required by the ASP+ Windows Form Designer.
//
InitializeComponent();
}</P><P> /// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
btnSubmit.Click += new System.EventHandler (this.OnSubmit);
this.Load += new System.EventHandler (this.Page_Load);
}
public void OnSubmit(Object sender , EventArgs e)
{
if (Page.IsValid)
{
//數據入庫
try
{notepage objNp = new notepage();
objNp.Title = txtTitle.Text;
objNp.Author = txtAuthor.Text;
objNp.Content = txtContent.Text;
objNp.adddate = System.DateTime.Now;
notepage objNp1 = new notepage();
if(objNp1.AddTopic(objNp))
{
Response.Write ("<p align=center class=cn>成功留言,點擊<a href = list.aspx>此處</a>查看留言列表!。</p>") ;
}}
catch(Exception exp)
{
#if DEBUG
Response.Write ("出現異常:" + exp.Message) ;
return ;
#endif//DEBUG
}}
}</P><P> }
}
顯示列表list.aspx
<%@ Page language="c#" Codebehind="list.cs" AutoEventWireup="false" Inherits="notpage.list" %>
<html><head>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#"></head>
<body>
<form method="post" runat="server"></P><P> </form><a href = "addTopic.aspx">發表留言</a><br>
<TABLE WIDTH="90%" HEIGHT="1" BORDER="0" CELLSPACING="2" CELLPADDING="2" id=liuyan>
<TR>
<TD>主題</TD>
<TD>留言人</TD>
<TD>留言時間</TD>
</TR>
<asp:label id="n_tdtitle" runat=Server></asp:label>
</TABLE></P><P> </body></html>
namespace notpage
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;</P><P> </P><P>
/// <summary>
/// Summary description for list.
/// </summary>
public class list : System.Web.UI.Page
{protected System.Web.UI.WebControls.Label n_tdtitle;
public list()
{Page.Init += new System.EventHandler(Page_Init);
}</P><P> protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack)
{
//
// Evals true first time browser hits the page
//
}
}</P><P> protected void Page_Init(object sender, EventArgs e)
{
//
// CODEGEN: This call is required by the ASP+ Windows Form Designer.
//
InitializeComponent();
Init_tdtitle();
</P><P> }
</P><P> /// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler (this.Page_Load);
}protected void Init_tdtitle()
{InitializeComponent();
//
// CODEGEN: This call is required by the ASP+ Windows Form Designer.
//
try
{ notepage np = new notepage();</P><P> ArrayList arrTopic = np.GetTopicList();
for ( int i = 0 ; i < arrTopic.Count ; i ++)
{
notepage objTopic = (notepage)arrTopic[i] ;
string str ="<tr><td><a href = showTopic.aspx?id="+objTopic.ID.ToString()+">" + objTopic.Title.ToString() + "</a></td>";
str = str +"<td>" + objTopic.Author.ToString()+"</td>";
str = str +"<td>" + objTopic.adddate.ToString()+"</td></tr>";
n_tdtitle.Text = str + n_tdtitle.Text;
}}
catch(Exception e)
{throw(new Exception("取得貼子列表出錯:" + e.ToString())) ;
}</P><P> }
}
}
查看留言內容showtopic.aspx
<%@ Page language="c#" Codebehind="showTopic.cs" AutoEventWireup="false" Inherits="notpage.showTopic" %>
<html><head>
<meta content="Microsoft Visual Studio 7.0" name=GENERATOR>
<meta content=C# name=CODE_LANGUAGE></head>
<body>
<form method=post runat="server">
<p align=center><font color=red><b>察看留言</b></font></p><br>
<p align=left><font color=blue>留言主題:<asp:label id=n_tdtitle runat="Server" forecolor="Black"></asp:label>
<br>留言時間:<asp:label id=n_tdAdddate runat="Server" forecolor="Black"></asp:label><br></font><font color=blue>留言人:
<asp:label
id=n_tdAuthor runat="server" forecolor="Black"></asp:label><br>留言內容:<asp:label id=n_tdContent
runat="Server" forecolor="Black"></asp:label> </font></p></form>
</body></html>
對應的cs
namespace notpage
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;</P><P> /// <summary>
/// Summary description for showTopic.
/// </summary>
public class showTopic : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label n_tdAuthor;
protected System.Web.UI.WebControls.Label td;
protected System.Web.UI.WebControls.Label n_tdContent;
protected System.Web.UI.WebControls.Label n_tdAdddate;
protected System.Web.UI.WebControls.Label n_tdtitle;
protected System.Web.UI.WebControls.Label n_ttitle;
public showTopic()
{Page.Init += new System.EventHandler(Page_Init);
}</P><P> protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//
// Evals true first time browser hits the page
//
}
}</P><P> protected void Page_Init(object sender, EventArgs e)
{
//
// CODEGEN: This call is required by the ASP+ Windows Form Designer.
//
int int_ID;
int_ID = Request.QueryString["ID"].ToInt32();
notepage np = new notepage();
notepage objNp = np.GetTopic(int_ID);
n_tdtitle.Text = objNp.Title.ToString();
n_tdContent.Text = objNp.Content.ToString();
n_tdAuthor.Text = objNp.Author.ToString();
n_tdAdddate.Text = objNp.adddate.ToString();
InitializeComponent();
}</P><P> /// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler (this.Page_Load);
}}}