当前位置:   article > 正文

黑河学院ASP.NET程序设计大作业(2)--分页、列表和详细页_asp期末大作业

asp期末大作业

目录

 

一、建立数据库:

二、连接数据库:

三、获取所有的列表

 四、实现分页

 五、实现列表页和详细页的绑定

六、项目难点


 

一、建立数据库

1.adminss表

dca5b980be534752bee47864a29c68f8.png

 2.columnss表设计及内容

166eea7382f24bfd8414eb86e825aa6a.png

5b3ea02538d546b7b083044c3808aa70.png3.messagess表设计及内容

 c4e2566805cc42f8ad7a9c9954c517c4.png

9391f8ff521742bc938761019c898779.png

二、连接数据库

文件中App_Code-----》dataOperate.cs的代码为:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Data;
  6. using System.Data.OleDb;
  7. /// <summary>
  8. ///dataOperate 的摘要说明
  9. ///引用命名空间
  10. /// </summary>
  11. public class dataOperate
  12. {
  13. public dataOperate()
  14. {
  15. //
  16. //TODO: 在此处添加构造函数逻辑
  17. //
  18. }
  19. //createconnection方法用来连接数据库。此方法返回类型为oledbconnection,主要用来构建数据库的连接。
  20. //1.创建数据库连接createconnection()
  21. public OleDbConnection createconnection()
  22. {
  23. OleDbConnection connn = new OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=|datadirectory|show.accdb");
  24. return connn;
  25. }
  26. //2.rows(string sql,string table)方法用来查找并返回多行数据。此方法返回一个datatable对象。再次调用此方法时应注意两个string类型的参数;
  27. //第一个参数执行sql语句;第二个参数表示表名。
  28. public DataTable rows(string sql, string table)
  29. { //连接 命令 桥梁 虚拟数据库 填充数据 数据绑定
  30. OleDbConnection conn = createconnection();
  31. OleDbCommand cmd = new OleDbCommand(sql,conn);
  32. OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
  33. DataSet ds = new DataSet();
  34. adp.Fill(ds,table);
  35. return ds.Tables[table];
  36. }
  37. //adldata(string sql)方法用来添加或者删除更新数据。此方法返回一个布尔值,用来便是添加或者删除数据是否成功,执行成功返回true;否则返回false。
  38. //调用此方法时应传入一个string类型的参数,此参数用来表示执行的SQL语句。
  39. //3.添加和删除数据用adldata
  40. public bool adldata(string sql)
  41. {
  42. OleDbConnection conn=createconnection ();
  43. OleDbCommand cmd=new OleDbCommand(sql,conn);
  44. conn.Open();
  45. int i=cmd.ExecuteNonQuery();
  46. if(i>0)
  47. {
  48. return true;
  49. }
  50. else
  51. {
  52. return false;
  53. }
  54. }
  55. //单行数据的查询,返回一行数据
  56. public OleDbDataReader row(string sql)
  57. {
  58. //连接 命令 桥梁 虚拟数据库 填充数据 数据绑定
  59. OleDbConnection conn = createconnection();
  60. OleDbCommand cmd = new OleDbCommand(sql, conn);
  61. //打开数据库
  62. conn.Open();
  63. OleDbDataReader dr = cmd.ExecuteReader();
  64. //返回
  65. return dr;
  66. }
  67. //更新单行数据
  68. //返回一行数据
  69. public void updateData(string sql)
  70. {
  71. //连接 命令 桥梁 虚拟数据库 填充数据 数据绑定
  72. OleDbConnection conn = createconnection();
  73. OleDbCommand cmd = new OleDbCommand(sql, conn);
  74. //打开数据库
  75. conn.Open();
  76. cmd.ExecuteNonQuery();
  77. //关闭
  78. conn.Close();
  79. }
  80. //添加、更新、删除
  81. public bool addDeleteUpdataData(string sql)
  82. { //updata
  83. //连接数据库
  84. OleDbConnection conn = createconnection();
  85. //命令
  86. OleDbCommand cmd = new OleDbCommand(sql,conn);
  87. //打开数据库
  88. conn.Open();
  89. //执行非查询语句
  90. if(cmd.ExecuteNonQuery()>0)
  91. {
  92. return true;
  93. }
  94. else
  95. {
  96. return false;
  97. }
  98. }
  99. }

三、获取所有的列表

1.使用工具箱---》数据---》Repeater控件

2.在<ItemTemplate>标签中展示

3.点击设计--》选择数据源

1bdb1b6d9ff44097982234695f6239ba.png

 4.d1e62eed10cb4a9bbaf1c688f817cae8.png35b64bc1554c413f89eb72e7da1171a7.png

 5.测试一下,是否是需要的数据,如果是,选择  完成 即可

284b1cdf609b4f5a96ae2f00e0d335af.png

 6.将需要展示的信息用 <%#Eval()%> 来展示

  1. <asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource2" >
  2. <ItemTemplate>
  3. <li>
  4. <a href="#"><%#Eval("messages_title")%></a>
  5. <span><%#Eval("messages_datetime","{0:d}")%></span>
  6. <div class="clearfix"></div>
  7. </li>
  8. </ItemTemplate>
  9. </asp:Repeater>

7.查看页面

eba065b65e454dc9ba9b38283df289d5.png

 四、实现分页

1.list.aspx中使用分页的代码

  1. <div class="fenye">
  2. <div class="row">
  3. <div class="col-md-3"></div>
  4. <div class="col-md-1">
  5. 当前页:<asp:Label ID="Label1" runat="server" Text="1"></asp:Label>
  6. </div>
  7. <div class="col-md-1">
  8. 总页数:<asp:Label ID="Label2" runat="server" Text=""></asp:Label>
  9. </div>
  10. <div class="col-md-1">
  11. <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">第一页</asp:LinkButton>
  12. </div>
  13. <div class="col-md-1">
  14. <asp:LinkButton ID="LinkButton2" runat="server" onclick="LinkButton2_Click">上一页</asp:LinkButton>
  15. </div>
  16. <div class="col-md-1">
  17. <asp:LinkButton ID="LinkButton3" runat="server" onclick="LinkButton3_Click">下一页</asp:LinkButton>
  18. </div>
  19. <div class="col-md-1">
  20. <asp:LinkButton ID="LinkButton4" runat="server" onclick="LinkButton4_Click">最后一页</asp:LinkButton>
  21. </div>
  22. </div>
  23. </div>

2.list.aspx.cs代码(实现分页功能)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. public partial class list : System.Web.UI.Page
  8. {
  9. dataOperate mydo = new dataOperate();
  10. protected void Page_Load(object sender, EventArgs e)
  11. {
  12. if (!Page.IsPostBack)
  13. {
  14. bindtoRepeater1();
  15. }
  16. }
  17. protected void bindtoRepeater1()
  18. {
  19. //获取数据库的信息,request.questring:获取地址栏参数
  20. //string id = Request.QueryString["column2_id"];
  21. //获取或者设置为填充列表提供数据源
  22. string sql = "select * from messagess where column2_id=4";
  23. //Pageddatasource类,实现分页功能
  24. //Allowpagging:是否启用分页设置 true
  25. //Pagesize:在单页显示的页数
  26. //Pagecount:显示数据源中所遇到所需的总页数
  27. //Currentpageindex:当前页数的索引,默认为0;
  28. //DataSource数据源
  29. PagedDataSource pds = new PagedDataSource();//实例化
  30. pds.DataSource = mydo.rows(sql, "list666").DefaultView;
  31. pds.AllowPaging = true;
  32. pds.PageSize = 5; // 每页展示的数据数量
  33. Label2.Text = Convert.ToString(pds.PageCount);//给总页数标签赋值,先要进行字符转换
  34. int currentpage = Convert.ToInt32(Label1.Text);//当前那页码数
  35. pds.CurrentPageIndex = currentpage - 1;
  36. LinkButton1.Enabled = true;
  37. LinkButton2.Enabled = true;
  38. LinkButton3.Enabled = true;
  39. LinkButton4.Enabled = true;
  40. if (currentpage == 1)//当前页为首页
  41. {
  42. LinkButton1.Enabled = false;
  43. LinkButton2.Enabled = false;
  44. }
  45. if (currentpage == pds.PageCount)
  46. {
  47. LinkButton3.Enabled = false;
  48. LinkButton4.Enabled = false;
  49. }
  50. //把sql,list444传到公共类后面的四个命令,最后再传导前端
  51. Repeater1.DataSource = pds;
  52. Repeater1.DataBind();
  53. }
  54. //private void bindtoRepeater1()
  55. //{
  56. // throw new NotImplementedException();
  57. //}
  58. protected void LinkButton1_Click(object sender, EventArgs e)
  59. {//第一页
  60. Label1.Text = "1";
  61. bindtoRepeater1();
  62. }
  63. protected void LinkButton2_Click(object sender, EventArgs e)
  64. {//上一页
  65. Label1.Text = Convert.ToString(Convert.ToInt32(Label1.Text) - 1);
  66. bindtoRepeater1();
  67. }
  68. protected void LinkButton3_Click(object sender, EventArgs e)
  69. {//下一页
  70. Label1.Text = Convert.ToString(Convert.ToInt32(Label1.Text) + 1);
  71. bindtoRepeater1();
  72. }
  73. protected void LinkButton4_Click(object sender, EventArgs e)
  74. {//最后一页
  75. Label1.Text = Label2.Text;
  76. bindtoRepeater1();
  77. }
  78. }

3.效果:

663c453862df4a06b4ccade41ecffa39.png

 五、实现列表页和详细页的绑定

1.按照列表页中将所有的数据从数据库中获取出来的方法,获取详细页的内容,依旧使用到 Repeater控件;

  1. <asp:Repeater ID="Repeater1" runat="server">
  2. <ItemTemplate>
  3. <div class="v-tit">
  4. <%#Eval("messages_title")%>
  5. </div>
  6. <div class="v-info">
  7. <span>
  8. 发布时间:<%#Eval("messages_datetime")%>
  9. </span>
  10. <span>
  11. 阅读次数:<%#Eval("messages_cnt")%>
  12. </span>
  13. </div>
  14. <div class="v-con">
  15. <p>
  16. <%#Eval("messages_content")%>
  17. </p>
  18. </div>
  19. </ItemTemplate>
  20. </asp:Repeater>
  21. <asp:AccessDataSource ID="AccessDataSource1" runat="server"
  22. DataFile="~/App_Data/show.accdb"
  23. SelectCommand="SELECT DISTINCT [messages_content], [messages_title],[messages_cnt],[messages_datetime],[messages_author] FROM [messagess] WHERE (([column1_id] = ?) AND ([column2_id] = ?))">
  24. <SelectParameters>
  25. <asp:Parameter DefaultValue="1" Name="column1_id" Type="Int32" />
  26. <asp:Parameter DefaultValue="4" Name="column2_id" Type="Int32" />
  27. </SelectParameters>
  28. </asp:AccessDataSource>

2.在列表页中的<a>标签中传递相对应的 messages_id,将信息拼接在地址栏中

<a href="tzhggDet.aspx?column1_id=<%#Eval("column1_id") %>&column2_id=<%#Eval("column2_id") %>&messages_id=<%#Eval("messages_id") %>"><%#Eval("messages_title")%></a>

效果:87f75cf2f7dd452585dbde660dfa3fa7.png

 3.在详细页的 .cs文件中获取id

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. public partial class tzhggDet : System.Web.UI.Page
  8. {
  9. dataOperate mydo = new dataOperate();
  10. protected void Page_Load(object sender, EventArgs e)
  11. {
  12. if (!Page.IsPostBack)
  13. {
  14. bindtorepeater1();
  15. }
  16. }
  17. protected void bindtorepeater1()
  18. {
  19. //获取数据库的信息,request.questring:获取地址栏参数
  20. string id = Request.QueryString["messages_id"];
  21. //获取或者设置为填充列表提供数据源
  22. string sql = "select * from messagess where messages_id=" + id;
  23. //把sql,list444传到公共类后面的四个命令,最后再传导前端
  24. Repeater1.DataSource = mydo.rows(sql, "list888").DefaultView;
  25. Repeater1.DataBind();
  26. }
  27. }

4.列表页和详细页已实现绑定

5.效果:

a866b15da873408da91f1affa8b9cf56.png

六、项目难点

遇到很多问题,自己上网找视频+瞎琢磨,完成了要求;

遇到的问题目前都已解决,未及时的记录问题(小遗憾)

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/155292
推荐阅读
相关标签
  

闽ICP备14008679号