您的位置:首页 > 编程语言 > ASP

用asp.net写的论坛程序--论坛主页

2008-04-24 05:46 127 查看
e main forum page

<%@ Page Language="C#" Debug="true" %>

<%@ Assembly Name="System.Data" %>

<%@ Import Namespace="System.Data.ADO" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System" %>

<html><head>

<title>Welcome to My Forum!</title>

<script language="C#" runat="server" >

//execute this script when the page loads

void Page_Load(Object Src, EventArgs E)

{

//Call the Method to DataBind the DataGrid

Binding() ;

}

//This Method Connects to the Database, and DataBinds the Database to the DataGrid

public void Binding()

{

//String to connect to the database, If your Database is in some other directory then change the path

//To the Database below

string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" Server.MapPath(".//db//board.mdb") ;

//Make a Connection to the Database

ADOConnection myConn = new ADOConnection(strConn) ;

//String to select records from the Database. newpost Table

//I have used "ORDER BY postid DESC" since I want to show the latest post on the top

//If you remove this clause then the oldest message will be shown first

string strCom = "SELECT postid ,subject ,name ,replies ,views ,date FROM newpost ORDER BY postid DESC" ;

//Open the Connection, Always remember to Open the connection before doing anything else

myConn.Open();

DataSet myDataSet = new DataSet();

//Create a ADODataSetCommand and a DataSet

ADODataSetCommand myCommand =new ADODataSetCommand(strCom,myConn);

//Fill the DataSet

myCommand.FillDataSet(myDataSet,"newpost") ;

//Connection is closed

myConn.Close();

//Set the DataView of the Table "newpost" contained in the DataSet for the DataGrid

DataGrid1.DataSource = myDataSet.Tables["newpost"].DefaultView ;

//DataBind the DataGrid

DataGrid1.DataBind();

}

//This method is called when the DataGrid is Paged (i.e. when you change from Page 1 to Page 2 etc.. )

public void DataGrid_Updt(Object sender, DataGridPageChangedEventArgs e)

{

//Call the Method to Databind

Binding();

}

//This Method is called when the form is submitted to make a new Post

public void Submit_Click(Object sender, EventArgs e)

{

//proceed only if all the required fields are filled-in

if(Page.IsValid&&name.Text!=""&&subject.Text!=""&&email.Text!=""){

//Get the Current Date and Time

DateTime now = DateTime.Now ;

errmess.Text="" ;

//I am building a custom query which will be used to call the postmessage.aspx page.

//Since it will be a query we have to encode the query into UTF8 format.

//So I get all the fields from the form and encode them into UTF8 format

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);

//Get the HostAddress of the Author

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);

//A 'yes' is used below to tell the postmessage page that this is a new topic post

req ="&&newpost=" System.Web.HttpUtility.UrlEncodeToString("yes", System.Text.Encoding.UTF8);

//call the postmessage.aspx page and append the query to it.

Page.Navigate("postmessage.aspx?" req);

}

else

{

errmess.Text="Fill in all the Required Fields before Posting!<br>" ;

}

}

</script>

<LINK href="mystyle.CSS" type=text/css rel=stylesheet></head>

<body topmargin="0" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0">

<!-- #Include File="header.inc" -->

<center>

<asp:label id="errmess" text="" style="COLOR:#ff0000" runat="server" />

<asp:Label class=fodark text="<font color=#00000 >Welcome to My Discussion Forum</font>" runat=server />

<br>

<br>

<form method="post" runat="server" ID=Form1>

<%-- The DataGrid settings. Its very interesting how much you can play with it --%>

<asp:DataGrid id=DataGrid1 runat="server" ForeColor="Black"

PagerStyle-Mode="NumericPages"

OnPageIndexChanged="DataGrid_Updt" PageSize="20" AllowPaging="True" width="80%" autogeneratecolumns="False">

<property name="PagerStyle">

<asp:DataGridPagerStyle BackColor="Coral" Mode="NumericPages">

</asp:DataGridPagerStyle>

</property>

<property name="AlternatingItemStyle">

<asp:TableItemStyle BorderColor="#FFC080" BackColor="#FF9966">

</asp:TableItemStyle>

</property>

<property name="FooterStyle">

<asp:TableItemStyle ForeColor="White" BackColor="DarkOrange">

</asp:TableItemStyle>

</property>

<property name="ItemStyle">

<asp:TableItemStyle BackColor="Moccasin">

</asp:TableItemStyle>

</property>

<property name="HeaderStyle">

<asp:TableItemStyle Font-Bold="True" ForeColor="White" BackColor="Coral">

</asp:TableItemStyle>

</property>

<%-- I am setting up the Individual columns myself using Templates --%>

<property name="Columns">

<%-- Manipulate the subject entry so that it contains a link to the reply page --%>

<asp:TemplateColumn HeaderText="Subject" itemstyle-width=50%>

<template name="ItemTemplate" >

<asp:Label runat="server" Text='<%#"<a href=reply.aspx?postid=" DataBinder.Eval(Container, "DataItem.postid") ">"

DataBinder.Eval(Container, "DataItem.subject") "</a>" %>' ID=Label2></asp:Label>

</template>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="Author Name" itemstyle-width=20%>

<template name="ItemTemplate">

<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.name") %>' ID=Label3></asp:Label>

</template>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="Replies" itemstyle-width=10%>

<template name="ItemTemplate">

<asp:Label runat="server" width=10% Text='<%# DataBinder.Eval(Container, "DataItem.replies") %>' ID=Label4>

</asp:Label>

</template>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="Views" itemstyle-width=10%>

<template name="ItemTemplate">

<asp:Label runat="server" width=10% Text='<%# DataBinder.Eval(Container, "DataItem.views") %>' ID=Label5>

</asp:Label>

</template>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="Date of Post" itemstyle-width=10%>

<template name="ItemTemplate">

<asp:Label runat="server" width=10% Text='

<%# DataBinder.Eval(Container, "DataItem.date").ToString().ToDateTime().ToShortDateString() %>' ID=Label6>

</asp:Label>

</template>

</asp:TemplateColumn>

</property>

</asp:DataGrid>

<br>

<br>

<asp:Label class=fodark text="<font color=#00000 >Post New Topic</font>" runat=server />

<br>

<table border="0" width="80%" align="center">

<tr >

<td class="fohead" colspan=2><b>Post New Topic</b></td>

</tr>

<tr class="folight" >

<td>Name :</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> Subject:</td>

<td><asp:textbox test="" id="subject" width=200 runat="server"/> <font color=#ff0000>*</font>

</td></tr>

<tr class="folight">

<td>Message :</td>

<td>

<asp:TextBox id=message runat="server"

Columns="30" Rows="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>

</center>

<!-- #Include File="footer.inc" -->

</body></html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: