寒行 发布留言 2008-6-29 10:41
急!急!急!使用 DataList 控件,如何将图片绑定到数据库的表中
有两张表,一张是相册表:album
Sno(用户) album_id(相册ID) album_name(相册名字) ...
张三 1 aa
张三 2 bb
张三 3 cc
李四 4 dd
王五 5 ee
王五 6 ee
另一张表:photos
album_id photo_id photo_url ....
1 1 photos/01.jpg
1 2 photos/02.jpg
1 3 photos/03.jpg
2 4 photos/04.jpg
2 5 photos/05.jpg
3 6 photos/06.jpg
3 7 photos/07.jpg
3 8 photos/08.jpg
下面是ASP.NET的XML文档,我使用的是DataList控件绑定数据:
'/> |
<%#Eval("album_name")%> |
下面是ASP。net 的代码页,实行对DataList的分页,要怎么对它进行处理,使它即能分页,又能显示出,每一个相册里面的第一张图片,让它做为相册的前景图片显示出来(就像QQ空间里的相册一下样,点击相册就能看到里面的所有照片)
public partial class myspace : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.num.Text = "1";
this.myphotos();
}
}
private void myphotos()
{
int curPage = (Convert.ToInt32(this.num.Text));
SqlConnection conn = new SqlConnection("server=.;database=photo_Data;Integrated Security=SSPI");
SqlDataAdapter da = new SqlDataAdapter("select a.album_id,a.album_name,a.album_id,b.photo_url from album as a , photos as b where a.album_id=b.album_id", conn);
DataSet ds = new DataSet();
da.Fill(ds, "album");
PagedDataSource ps = new PagedDataSource();
ps.DataSource = ds.Tables["album"].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 6;
ps.CurrentPageIndex = curPage - 1;
this.previous.Enabled = true;
this.next.Enabled = true;
if (curPage == 1)
{
this.previous.Enabled = false;
}
if (curPage == ps.PageCount)
{
this.next.Enabled = false;
}
this.DataList1.DataSource = ps;
this.DataList1.DataBind();
}
protected void previous_Click(object sender, EventArgs e)
{
this.num.Text = Convert.ToString(Convert.ToInt32(this.num.Text) - 1);
this.myphotos();
}
protected void next_Click(object sender, EventArgs e)
{
this.num.Text = Convert.ToString(Convert.ToInt32(this.num.Text) +1);
this.myphotos();
}
请各位高手多多指教。。。。谢谢。。。。
[ 本帖最后由 寒行 于 2008-6-29 10:42 编辑 [/it]]
贝蕾 发布留言 2008-6-29 10:46
你现在的问题是什么啊?
冰彩虹 发布留言 2008-6-29 11:00
这就看你怎么筛选数据了
寒行 发布留言 2008-6-29 12:04
回复 2# 贝蕾 的帖子
就是怎么把XML中 DataList控件的 Image地址绑定到数据库的图片地址上,而且我是想让它像QQ空间里的相册一样。在网页里,显示每个相册的第一照片。
就是让这条语怎么对数据库进行筛选,然后得到每一个相册的第一条记录的信息 SqlDataAdapter da = new SqlDataAdapter("select a.album_id,a.album_name,a.album_id,b.photo_url from album as a , photos as b where a.album_id=b.album_id", conn);
谢谢了
寒行 发布留言 2008-6-29 12:20
回复 3# 冰彩虹 的帖子
我就是因为不会筛选数据,所以发贴,我也问过老师了,他们也不懂,帮帮我。。。急。。。谢谢。。。。
寒行 发布留言 2008-6-29 12:31
回复 3# 冰彩虹 的帖子
版主。。要是上线的话,麻烦你用QQ通知我一下。。。我真的很急需。。。
QQ;316728849 谢谢了。。。。
寒行 发布留言 2008-6-29 13:18
各位高手快帮帮我啊。。。。
我对数据库是在筛选不出来,哪位高手快帮我筛选一下。。。
hebingbing 发布留言 2008-6-29 13:56
top 1 不就是第一条记录吗?
SqlDataAdapter da = new SqlDataAdapter("select top 1 a.album_id,a.album_name,a.album_id,b.photo_url from album as a , photos as b where a.album_id=b.album_id", conn);
寒行 发布留言 2008-6-29 15:51
回复 8# hebingbing 的帖子
但是这样只能提取出一个相册的第一条数据,不能提取全部相册的第一条数据
按上面那条语句得到的数据是:
album_id album_name photo_url
1 aa photos/01.jpg
但我想要的结果是每个相册的第一条记录,那就是:
album_id album_name photo_url
1 aa photos/01.jpg
2 bb photos/04.jpg
3 cc photos/06.jpg
我提取不出来,麻烦版主帮帮忙!!!
hebingbing 发布留言 2008-6-29 16:26
SqlDataAdapter da = new SqlDataAdapter("select (distinct a.album_id),b.album_id,a.album_name,b.photo_url from album as a , photos as b where a.album_id=b.album_id", conn);
试试这样行不行
[ 本帖最后由 hebingbing 于 2008-6-29 16:27 编辑 [/it]]
寒行 发布留言 2008-6-29 16:38
回复 10# hebingbing 的帖子
还是不行啊,会出现括号的错误
要不你帮我看看上面的数据,想想还有没有其他的方法
谢谢
贝蕾 发布留言 2008-6-29 16:39
去掉括号试试
寒行 发布留言 2008-6-29 16:58
回复 12# 贝蕾 的帖子
取掉括号的话,就相当于对三个进行同步去除相同的项,而最后一项完全不一样,所以,也是全部显示出来。如果把discinct album_id 拿到最后,就出现错误了。提示在discinct附近出现错误
hebingbing 发布留言 2008-6-29 17:27
解决这个问题可以有这么几个办法
1.用存储过程,先从相册表中得出总共有几个相册,然后使用循环从图片数据库中为每个相册取出一张照片。
2.在dataset中操作。
album_id photo_id photo_url ....
1 1 photos/01.jpg
1 2 photos/02.jpg
1 3 photos/03.jpg
2 4 photos/04.jpg
2 5 photos/05.jpg
3 6 photos/06.jpg
3 7 photos/07.jpg
3 8 photos/08.jpg
查询出来的结果是这样的是吧,然后通过循环绑定的时候只绑定每个相册的一张图片就ok了
3.建立试图……………………
………………
吃饭考试去了
寒行 发布留言 2008-6-29 17:54
回复 14# hebingbing 的帖子
我对数据库操作比较不熟悉。对于对数据库进行循环查询,我有给老师提过这个意见,但他没采纳我的意见,而我又不会,所以不知道该怎么做。能不能你帮我写一下代码。。。我在这边试。
第二个办法,结果是那样,但又是涉及到对数据的循坏,我也不会。而且,好像
DataList 已经会对数据进行循环显示,如果在循环,我都想不出会是什么结果。
第三个办法。我跟老师在那边试过,我们俩都不行,所以看你有什么高招。
。。。。。还得麻烦你,不好意思。。。晚上也有考试??你们那边真搞怪,我们这边晚上都很少上课的。麻烦你回来的时候再帮我想想哦。。。。非常感谢。。。
冰彩虹 发布留言 2008-6-29 21:46
select a.album_id,a.album_name,a.album_id,b.photo_url from album a,(
select P1.photo_url,P1.album_id from photos P1 where phote_id in (select min(phote_id)) from photos P2
where P1.album_id = P2.album_id)) b where a.album_id=b.album_id
寒行 发布留言 2008-6-29 22:49
回复 16# 冰彩虹 的帖子
还是不行啊,你在那边试过了吗??会提示在 from附近出现错误。。。。
还有你有的代码打错了photod_id 你打错为phote_id ,但我改回来了,还是出现那个错误,请再帮帮忙。。。。好吗??
我十一点就断网了,只能等明天中午再上了,令版主费心了。。。。
还是再说谢谢了。。。。
寒行 发布留言 2008-6-29 22:56
谢谢各位
谢谢各位高手的帮忙了,谢谢了。可以了,呵呵。。。。。非常感激。。。。以后我会常来的。。。就是from前面多一个括号。。。刚才试了一下,才知道可以的。。
页: [1]