弗尤博客(三)

此文章有错误,请结合下一篇博文浏览

在上一篇文章中我们通过session和母版页记录的登录状态,利用空间没有text后消失的原理实现,那么问题来了,在我们访问自己的博客主页时,可以直接用session的值来获取登录用户的信息,那么登录后访问他人博客如何在同一个网页中实现呢。

首先我们来看下信息表:

ps:NULL我别的地方还没有完善,这样不报错;

自己的博客主页,我用datalist,在里面加linkbotton,这样的形式完成的。在博客网站首页点击“我的博客”进入的。通过传进来的session来,查找用户名,确定该页面为用户主页。

然后,登陆状态下,通过网站首页中的文章来访问他人主页,我用DataList1_ItemCommand中的CommandArgument和CommandName来完成的,由于我首页博文是datalist显示的,所以这样能访问到每个bid。然后呢,通过这个bid查找对应的uid,实现访问他人博客。

其中,用到了多表连接查询,我的bid是标识的,所以每个都不同,即使是同一个用户,但是单用左连接的话查询会把这个uid发的所有文章都显示出来,如果我们加只显示第一行就好,就不会在我的博客页赋值时因为有多个相同列而报错,在上课时学的子查询发现查询不了,网上找到的这个方法:参考链接:https://www.cnblogs.com/wangyanyan/archive/2018/01/16/8296801.html

如果不加top,那么由于我的博客头部是datalist,所以会出现重复数据,因为他每条数据都会被分别显示。

此外因为我显示文章是iframe里写的所以别忘了在后台加新页面跳转代码。

 form1.Target = "_blank";

 

好了话不多说上代码。

 1  //博客网站首页文章
 2 protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
 3     {
 4         if (e.CommandName == "blogs")
 5         {
 6             Response.Redirect("UserBlogs.aspx?bid=" + e.CommandArgument.ToString());
 7         }
 8     }
 9 
10 
11 //我的博客
12  protected void Page_Load(object sender, EventArgs e)
13     {
14         if (Session["uid"] == null)
15         {
16             Aind();
17         }
18         else
19         {
20             if (Request.QueryString["bid"] == null)
21             {
22                 Bind();
23             }
24             else
25             {
26                 Aind();
27             }
28             
29         }
30     }
31     public void Bind()
32     {
33         UserBusiness uname = new UserBusiness();
34         UserEntity user = new UserEntity();
35         user.Uid = Session["uid"].ToString();
36         DataTable dt = new DataTable();
37         dt = uname.FindUserInfo(user);
38         DataList1.DataSource = dt;
39         DataList1.DataBind();
40     }
41     public void Aind()
42     {
43         BlogsBusiness blogs = new BlogsBusiness();
44         BlogsEntity b = new BlogsEntity();
45         DataTable dt = new DataTable();
46         dt = blogs.SelectUid();
47         DataList1.DataSource = dt;
48         DataList1.DataBind();
49         
50     }
51 
52 //Bussiness
53 public DataTable SelectBlogs()
54         {
55             string sqlText = "select * from Blogs";//返回值是数据集
56             DataTable dt = new DataTable();//实例化数据集对象
57             dt = DA.GetDataTable(sqlText, CommandType.Text, null, null);
58             return dt;
59         }
60         public DataTable SelectUid()
61         {
62             string sqlText = "select top 1* from Blogs  left join UserInfo on Blogs.uid=UserInfo.uid ";
63             DataTable dt = new DataTable();
64             dt = DA.GetDataTable(sqlText, CommandType.Text, null, null);
65             return dt;
66         }
View Code

 


 

posted @ 2018-12-11 23:10  ybpx  阅读(314)  评论(0编辑  收藏  举报