代码改变世界

XPO学习(6)----实现一个简单的留言薄(ASP.NET)

2011-10-20 10:28  OOA  阅读(751)  评论(0编辑  收藏  举报

l留言簿是网站上很常见的一个功能。一个访问者可以通过这个留言簿留下姓名,EMAIL,消息标题及内容。内容显示用ASPxNewscontrol控件。类似界面如下:

步骤:

1.界面设计

2.定义一个持久类

3.XPO与数据库建立连接

4.把Comment 绑定到XpoDataSource 控件 

5.创建XPO session

6.绑定数据源到ASPxNewsControl

7.实现保存内容

具体实现:

1.界面设计:

先拖拽 一个XpoDataSource控件用于存放数据和从数据库中查询数据。在拖拽一个ASPxNewsControl用于显示数据,在拖拽一个ASPxRoundPanel来做个编辑留言的区域,再分别拖拽三个ASPxLabel和ASPxTestBox和ASPxMemo 和一个ASPxbutton,并修改下ID属性。

2.定义持久类:

先创建一个名为:Comment的持久对象的类;代码如下:

    public class Comment : XPObject
{
public DateTime Date;
public string Text;
public string Title;
public string Email;


public Comment()
: base()
{

}

public Comment(Session session)
: base(session)
{
// This constructor is used when an object is loaded from a persistent storage.
// Do not place any code here.
}

public Comment(Session session, DateTime date, string text, string title, string email, string visitorName)
: base(session)
{
this.Date = date;
this.Text = text + "[" + visitorName + "," + email + "]";
this.Title = title;
}
public override void AfterConstruction()
{
base.AfterConstruction();
// Place here your initialization code.
}
}

3.XPO与数据库建立连接。

在Application_Start事件里写入一下代码:

        protected void Application_Start(object sender, EventArgs e)
{
string conn = DevExpress.Xpo.DB.AccessConnectionProvider.GetConnectionString(Server.MapPath("~\\App_Data\\Comments.mdb"));
DevExpress.Xpo.Metadata.XPDictionary dict = new DevExpress.Xpo.Metadata.ReflectionDictionary();
dict.GetDataStoreSchema(typeof(Comment).Assembly);
DevExpress.Xpo.XpoDefault.Session = null;
DevExpress.Xpo.DB.IDataStore store = DevExpress.Xpo.XpoDefault.GetConnectionProvider(conn, DevExpress.Xpo.DB.AutoCreateOption.SchemaAlreadyExists);
DevExpress.Xpo.XpoDefault.DataLayer = new DevExpress.Xpo.ThreadSafeDataLayer(dict, store);

}

4.把Comment绑定到XPODataSource控件上

5.创建Session

在PageInit事件里填写如下代码:

        protected void Page_Init(object sender, EventArgs e)
{
session1 = new Session();
XpoDataSource1.Session = session1;
}

6.实现保存

在buttonclick事件里填写如下代码:

            Comment newComment = new Comment(session1, DateTime.Today, ASPxMmContent.Text, ASPxTbTitle.Text, ASPxTbEmail.Text, ASPxTbName.Text);
newComment.Save();
ASPxNewsControl1.DataBind();

OK,启动调试:

界面出来了,

总结:

这一节我们实现了一个简单的留言板的功能。巩固了ASP.NET应用程序使用XPO操作数据库的一般步骤。练习了ASPxNewsControl和ASPxRoundPanel的使用。