用DataList 控制元件开发的一个简单的留言本程序
<%@ Import Namespace=\"System.Data.ADO\" %>
<Html>
<Body BgColor=\"White\">
<H3>DataList 控制元件<HR></H3>
<div id=Message runat=server></div>
<Form runat=\"server\">
<table cellspacing=0 cellpadding=0 width=\"776\" border=0>
<tr>
<td width=\"2%\"><img height=20 src=\"/Files/BeyondPic/200601/2006-1/19/0611922392676992.gif\" width=16></td>
<td width=\"98%\" bgcolor=#333333 align=\"center\"><font face=宋体 color=#ffffcc><b>留言本</b></font></td>
</tr>
</table>
<asp:DataList id=\"DataList1\" runat=\"server\"
Border=\"1\" BorderColor=\"Black\"
CellPadding=\"2\" CellSpacing=\"0\"
HeaderStyle-BackColor=\"#888888\"
ItemStyle-BackColor=\"#eeeeee\"
SelectedItemStyle-BackColor=\"#ffffff\"
HeaderTemplate-ColSpan=\"3\"
OnItemCommand=\"DataList_ItemCommand\"
Width=\"776\">
<!--编号模版-->
<template name=\"HeaderTemplate\" >
<asp:LinkButton id=\"Tosay\" runat=\"server\" Text=\"我要发言\" ForeColor=\"#ffffff\"/>
<a href=\"temp.aspx\"><font color=\"#ffffff\">刷新界面</font></a>
<asp:LinkButton id=\"Mange\" runat=\"server\" Text=\"管理留言\" ForeColor=\"#ffffff\"/>
</template>
<!--内容模版-->
<template name=\"ItemTemplate\">
<%# Container.DataItem(\"book_id\")%>
<%# Container.DataItem(\"content\")%>
<asp:LinkButton id=\"Detail\" runat=\"server\" Text=\"查看详细内容\" ForeColor=\"#333333\"/>
</template>
<!--查看留言模版-->
<template name=\"SelectedItemTemplate\">
编号: <%# Container.DataItem(\"book_id\")%><BR>
发言人: <%# Container.DataItem(\"username\")%><BR>
时间: <%# Container.DataItem(\"post_time\")%><BR>
内容: <%# Container.DataItem(\"content\")%><BR>
<div align=\"right\"><asp:LinkButton id=\"Title\" runat=\"server\" Text=\"关闭\" ForeColor=\"#333333\"/></div>
</template>
</asp:DataList>
<table id=\"foot\" cellspacing=0 cellpadding=0 width=\"776\" border=0 runat=\"server\" visible=\"false\">
<tr>
<td bgcolor=#000000>
<table cellspacing=1 cellpadding=3 width=\"100%\" border=0>
<tr bgcolor=#ffffff>
<td>大名:<Input Type=\"Text\" id=\"Username\" Size=20 runat=\"server\" /><br>
留言:<Input Type=\"Text\" id=\"Content\" Size=20 runat=\"server\" />
<asp:LinkButton id=\"save\" runat=\"server\" Text=\"保存\" OnClick=\"LinkButton1_Click\" AutoPostBack/><br>
<asp:LinkButton id=\"close\" runat=\"server\" Text=\"关闭\" OnClick=\"LinkButton2_Click\"/></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=0 cellpadding=0 width=\"776\" border=0>
<tr>
<td width=\"98%\" bgcolor=#333333 align=\"center\"><font face=宋体 color=#ffffcc><b> 留言本</b></font></td>
<td width=\"2%\"><img height=20 src=\"/Files/BeyondPic/200601/2006-1/19/0611922392699864.gif\" width=16></td>
</tr>
</table>
</Form>
<hr>
<asp:Label id=\"Label1\" runat=\"server\" />
</Body>
</Html>
<script Language=\"VB\" runat=\"server\">
Sub Page_Load(sender As Object, e As EventArgs)
DataList1.DataSource = CreateDataView( \"data.mdb\", \"guestbook\" )
DataList1.DataBind()
End Sub
Function CreateDataView( Db As String, Table As String ) As DataView
Dim Provider, ConnStr, SQL As String
Provider = \"Microsoft.Jet.OLEDB.4.0;\"
ConnStr = \"Provider=\" & Provider & _
\"Data Source=\" & Server.MapPath( Db )
Dim Cmd As ADODataSetCommand
Cmd = New ADODataSetCommand( \"Select * from \" & Table &\" Order By post_time DESC\", ConnStr )
Dim ds As DataSet = new DataSet()
Cmd.FillDataSet(ds, Table)
CreateDataView = new DataView(ds.Tables(Table))
End Function
Sub DataList_ItemCommand(sender As Object, e As DataListCommandEventArgs)
select case e.CommandSource.Text
case \"我要发言\"
foot.Visible = true
case \"管理留言\"
case \"查看详细内容\"
DataList1.SelectedIndex = e.Item.ItemIndex \'查看留言模版被选中
case \"关闭\"
DataList1.SelectedIndex = -1
end select
DataList1.DataSource = CreateDataView( \"data.mdb\", \"guestbook\" )
DataList1.DataBind()
End Sub
Sub LinkButton2_Click(sender As Object, e As EventArgs)
foot.Visible = false
End Sub
Sub LinkButton1_Click(sender As Object, e As EventArgs)
Dim ConnStr, SQL As String
SQL = \"Insert Into GuestBook (userName,post_time,content) Values (\'\"& Username.Value &\"\',\'\"& DateTime.Now &\"\',\'\"& Content.Value &\"\')\"
ConnStr = \"Provider=Microsoft.Jet.OLEDB.4.0;\" & _
\"Data Source=\" & Server.MapPath( \"data.mdb\" )
Dim Cmd As ADOCommand = New ADOCommand( SQL, ConnStr )
Cmd.ActiveConnection.Open()
Cmd.Execute()
Message.InnerHtml = \"<B>留言成功!</B>\"
foot.Visible = false
Page.Navigate(\"temp.aspx\")
End Sub
</script>
研究了好长时间,可最后那句Page.Navigate(\"temp.aspx\")还是达不到及时刷新的效果:(,看精华区有篇C#编的是在PAGE_LOAD事件里面接收REQUEST.FORM对象后INSERT立即更新DATESET,不知道我这个怎么弄好...