想实现以上的功能,先显示所有会员(会员表Member)然后显示每个会员的照片(照片表Media).
先说说我做到现在的情况我用asp:repeater控件绑定数据
在后台写了一个SQL语句select * from media left join member on member.hyid = media.hyid
但是这样会查询出所有照片数据,比如说10022的会员有多张照片,那么它会循环多个.
请问有什么好办法吗?或者思路?
先说说我做到现在的情况我用asp:repeater控件绑定数据
在后台写了一个SQL语句select * from media left join member on member.hyid = media.hyid
但是这样会查询出所有照片数据,比如说10022的会员有多张照片,那么它会循环多个.
请问有什么好办法吗?或者思路?
解决方案 »
- 正则表达式 检查输入至少8位字符 谢谢大家帮忙
- 初学者~~我在书上看到一个例子﹐关于cimparevalidator 控件的问题
- Request.Cookies("tmpname").Value的值都不同
- easyui中的treegrid如何使用?
- 如何学好ASP
- 请问如何获得datalist中文本框的值
- 请教关于datalist内加dropdownlist得问题
- 问下,在C#中,有没有类似vb中的Collection对象,有的话,怎么用法,和vb一样吗
- 我的数据源为何更新不了???
- 如何在asp.net中使用api函数,要简单举例(vb.net,c#.net都要)?
- dataset 相互赋值的问题
- 如何在用户控件中触发内部DropDownList的OnSelectedIndexChanged
我是说可以用分页控件,如果你不分页那就可以不用啊,还有sql最好别写 select * from xx
SELECT DISTINCT ...
FROM member ...
LEFT JOIN media ...
SQL语句中加个top 1 看看
那就是你sql写的有问题,优化下
aspx代码:<table border="0" cellpadding="0" cellspacing="0" style="margin-bottom: 5px" width="100%">
<asp:Repeater runat="server" ID="rptypelist" OnItemDataBound="rptypelist_ItemDataBound">
<ItemTemplate>
<tr>
<td class="fb">
<a href="Lists.aspx?Qtid=<%#Eval("qtid") %>"><%#Eval("qtypename") %></a> <span id="askCount_15"
class="date2">[<%#Eval("typecount")%>]</span>
</td>
</tr>
<tr>
<td>
<div id="askTop2_15" class="ask_list">
<asp:Repeater runat="server" ID="rpquestionlist">
<ItemTemplate>
<a href="Question.aspx?qid=<%#Eval("liftquestionid")%>">
<%#Eval("questiontitle")%></a><br />
</ItemTemplate>
</asp:Repeater>
</div>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
cs代码:
private void RpTypeBind()
{//GetQuestionTypeAndCount() 返回一个datatable
this.rptypelist.DataSource = LiftQuestionCtr.GetQuestionTypeAndCount();
this.rptypelist.DataBind();
}
protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e)
{//判断里层repeater处于外层repeater的哪个位置( AlternatingItemTemplate,FooterTemplate,//HeaderTemplate,,ItemTemplate,SeparatorTemplate)
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = e.Item.FindControl("rpquestionlist") as Repeater;//找到里层的repeater对象
DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
int typeid = Convert.ToInt32(rowv["qtid"]); //获取填充子类的id
rep.DataSource = LiftQuestionCtr.GetSomeQuestionsByTypeid(typeid, 2);
rep.DataBind();
}
}
"top 1"
我感觉可能不合适,
楼主是要为每个成员取一个图片,top 1的话就只取一条数据了说地不对的地方请见谅!
非常感谢!您的答案应该就是我要的,我根据你的代码修改,报了一个错,请问是为什么?
DataRowView rowv = (DataRowView)e.Item.DataItem;无法将类型为“HMO.Models.Member”的对象强制转换为类型“System.Data.DataRowView”。
我经常用这个老报错,最后我直接用选好搞定的
for (int iss = 0; iss < rpOtherLeaderStat.Items.Count; iss++)
{
Label lblName = rpOtherLeaderStat.Items[iss].FindControl("lblName") as Label;
}
我开始的方法是这样去做的.
前台 <asp:Repeater ID="dgvPhoto" runat="server" OnItemDataBound="dgvPhoto_ItemDataBound">
<ItemTemplate>
<table cellspacing="0" class="htmain">
<tr>
<td class="tdd" align="left" colspan="6">
姓名:<%#Eval ("pet_name") %> 性别:<%#Eval ("sexs") %> 年纪:<%#Eval ("age") %> 体重:<%#Eval ("weight") %> 身高:<%#Eval ("height") %>
</td>
</tr>
<tr bgcolor="#f5f5f5">
<%
System.Collections.Generic.IList<HMO.Models.Media> medialist = ShowPhoto(Eval("hyid"));
foreach (HMO.Models.Media medias in medialist)
{
<td>
<br />
<img src='../../images/<%=medias.uprul %>' width="113" height="140" alt="lovegw" /><br />
图片大小:<%=medias.size %><br />
<label>
<input type="button" value="通 过" /></label>
<label>
<input type="button" value="删 除" /></label>
</td>
</ItemTemplate>
</asp:Repeater>
<%} %>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>后台 if(!ispost)
{
dgvPhoto.DataSource = memberManager.MemberSelectAll();
pds.DataSource = dgvPhoto.DataSource as List<Member>;
pds.AllowPaging = true;
pds.PageSize = 1;
this.AspNetPager1.RecordCount = pds.DataSourceCount;
this.AspNetPager1.PageSize = pds.PageSize;
pds.CurrentPageIndex = 0;
dgvPhoto.DataSource = pds;
dgvPhoto.DataBind();
}
public IList<Media> ShowPhoto(object hyid)
{
int status = 1;
string type = "相册";
int media_hyid = Convert.ToInt32(hyid);
IList<Media> medialist = mediaManager.MediaSelectByhyidID(media_hyid, type, status);
return medialist;
}
但这样写会报个错!
Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。
ShowPhoto(Eval("hyid"));
那又请问如何解决呢?
首先非常感谢你的在线回答!
你说说ShowPhoto('<%# Eval("hyid")%>);这样吗?
你把我的那段代码试试...
加个#试试?
如果ShowPhoto是后台的方法的话
绑定是这样的:'<%# ShowPhoto(Eval("hyid"))%>'
签名我写的只是参考