小弟最近在做毕业设计,我们指导老师要求首页列出论坛的板块,而且每个版块都得有最新的几个帖子,还要求管理员能增加、删除、屏蔽板块!我用datalist能列出每个版块,也能增删,但是不能列出每个班块的最新帖子。说明白点就是首页分不同的板块显示,每个版块有其最新的几个帖子,而且管理员能增删屏。这些天都在弄这个就是弄不出来,麻烦各位大师帮忙看看,我用什么控件好,要怎样才能实现。麻烦大师们说清楚点,我是个菜鸟,么办法毕业设计啊!!谢谢各位大师了,小第几了好多天的…………
解决方案 »
- 尝试为文件 G:\化妆品网站毕业设计\App_Data\zhuangliyuan.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开
- Sql语句怎么写啊?
- net发布问题
- IIS部署的站点不能通过登录页进入系统,部署实施的灵异问题!
- 请教DataGrid 80分求助
- 急求页面跳转问题,如:从A页面跳到B页面,先刷新B页面, 在运行B页面代码,运行结束后,再返回A页面。求各位大大帮帮。
- asp.net实现上传产品图片生成二维码图片
- ajaxpro为什么时候执行时一直在读取,很长时间也不返回,实际已经执行完了
- 基于WEB的数据库管理工具
- 帮帮忙:关于打开模态窗口的问题,困扰我好久了?
- 不存在具有键“ProjTypeID”的“IEnumerable<SelectListItem>”类型的 ViewData 项。
- vs2005项目 连sql2000 连接不上
根据你这“三点”进行分析:说明白点就是首页分不同的板块显示,每个版块有其最新的几个帖子,而且管理员能增删屏。第一:说明白点就是首页分不同的板块显示版块:id bkName1 A版块
2 B版块在首页时候应该知道怎么查询了吧。第二:每个版块有其最新的几个帖子帖子:id tzTitle bkId bTime1 哈哈 1 时间2 呵呵 2 时间3 飘过~ 1 时间
string sql = "select top 3 * from 帖子 where bkId =" + bId + "order by bTime desc";这里要说明下需要用到2个datalist的嵌套,就是帖子嵌套进版块bId 指的就是 版块的Id,在datalist1 做个隐藏域 ,在绑定版块的时候绑定如: <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("Id") %>' />
datalist2 的ItemDataBound事件里 在写:取到隐藏域的值。。bIdstring sql = "select top 3 * from 帖子 where bkId =" + bId + "order by bTime desc";接着绑定数据,dataset 这里和绑定A版块一样的了。
第三:而且管理员能增删屏。增删屏应该会了吧insert intodelete屏:给帖子加一个字段,正常贴子假设是0 屏蔽后是1.打完收工
你的这种方法我试了一下么有成功,可能是我哪里没弄好!我的一种方法是:datalist里面在放一个datalist,利用外层datalist的ItemDataBound绑定内层的datalist。但是我又遇到一个问题就是帖子表中有多个帖子板块的Id相同时,首页同一个板块就有多个,这个我又不知道该怎么弄了!!!
public void aa()
{
//string MdId = Request["MdId"];
SqlConnection con = DB.createDB();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("select * from tb_Module", con);
DataSet ds = new DataSet();
sda.Fill(ds, "tb_Module");
this.DataList1.DataSource = ds;
this.DataList1.DataKeyField = "MdId" ;
this.DataList1.DataBind();
con.Close();
}
public void pagebind()
{
string MdId = Request["MdId"];
int curpage = Convert.ToInt32(this.lblPage.Text);
PagedDataSource ps = new PagedDataSource();
SqlConnection con = DB.createDB();
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("select DISTINCT a.*,b.* from tb_Content as a join tb_Module as b on a.MdId=b.MdId order by b.MdId,a.CreateTime ", con);
DataSet ds = new DataSet();
sda.Fill(ds, "tb_Content");
ps.DataSource = ds.Tables["tb_Content"].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 3;
ps.CurrentPageIndex = curpage - 1;
this.lnkbtnUp.Enabled = true;
this.lnkbtnNext.Enabled = true;
this.lnkbtnLast.Enabled = true;
this.lnkbtnOne.Enabled = true;
if (curpage == 1)
{
this.lnkbtnOne.Enabled = false;//不显示第一页按钮
this.lnkbtnUp.Enabled = false;//不显示上一页按钮
}
if (curpage == ps.PageCount)
{
this.lnkbtnNext.Enabled = false;//不显示下一页
this.lnkbtnLast.Enabled = false;//不显示最后一页
}
this.lblBackPage.Text = Convert.ToString(ps.PageCount);
this.DataList1.DataSource = ps;
this.DataList1.DataKeyField = "ContId";
this.DataList1.DataBind();
con.Close();
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
DataList datalist2;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
datalist2 = e.Item.FindControl("DataList2") as DataList;
if (datalist2 != null)
{
SqlConnection con1 = DB.createDB();
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = con1;
con1.Open();
SqlDataAdapter da1 = new SqlDataAdapter("select * from tb_Content where MdId = @MdId", con1);
da1.SelectCommand.Parameters.AddWithValue("@MdId", (e.Item.DataItem as DataRowView)["MdId"]);
DataSet ds = new DataSet();
da1.Fill(ds);
datalist2.DataSource = ds.Tables[0].DefaultView;
datalist2.DataBind();
con1.Close();
}
}
}这是我的代码!应该是分页那里面的select不严谨才会出现这个问题的,大师看看能不能帮小弟改一改!
代码:
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{ if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{ DataList dList = e.Item.FindControl("DataList2") as DataList; HiddenField hf = e.Item.FindControl("hf2") as HiddenField; int bId = Convert.ToInt32(hf.Value.ToString()); DataSet ds = getBkzxtz(bId); dList.DataSource = ds; dList.DataBind();
}
} public DataSet getBkzxtz(int bId)
{ string sql = "select top 3 * from tz where bkId=" + bId + "order by tzTime desc"; SqlConnection sqlcon = new SqlConnection(Db.cslt); sqlcon.Open(); SqlDataAdapter adp = new SqlDataAdapter(sql, sqlcon); DataSet ds = new DataSet(); adp.Fill(ds); return ds;
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
DataList datalist2;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
datalist2 = e.Item.FindControl("DataList2") as DataList;
if (datalist2 != null)
{
SqlConnection con1 = DB.createDB();
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = con1;
con1.Open();
SqlDataAdapter da1 = new SqlDataAdapter("select * from tb_Content where MdId = @MdId", con1);
da1.SelectCommand.Parameters.AddWithValue("@MdId", (e.Item.DataItem as DataRowView)["MdId"]);
DataSet ds = new DataSet();
da1.Fill(ds);
datalist2.DataSource = ds.Tables[0].DefaultView;
datalist2.DataBind();
con1.Close();
}
}
}
ItemDataBound事件中这样调用
//动态获取栏目相关的控件 内层dataList
DataList 内层dataList = e.Item.FindControl("内层dataList") as DataList;
if (内层dataList!= null)
{
//获取版区ID号
int intBoardNum=Convert.ToInt32(dLstBorards.DataKeys[e.Item.ItemIndex]); //......部分代码省略......你懂得 string strSql="select 帖子内容 from 帖子表 where id=" + intBoardNum; //......部分代码省略........你懂得 //为内层dataList绑定数据
内层dataList.DataSource = 帖子表;
内层dataList.DataBind();
}