repeater嵌套

<asp:RepeaterID="RepeaterSamples"runat="server"DataSourceID="datasamples"><HeaderTemp... <asp:Repeater ID="RepeaterSamples" runat="server" DataSourceID="datasamples">
<HeaderTemplate><table><tr></HeaderTemplate>
<ItemTemplate>
<td>
<table style="width: 300px; height: 200px;">
<tr><td colspan="2" rowspan="3">
<asp:Repeater ID="RepeaterSamplesPhoto" runat="server">
<ItemTemplate><img alt="" width="120px" height="100px" src="<%#DataBinder.Eval(Container.DataItem, "picpath").ToString().Replace("~/","")%>" /></ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="datasamplesphoto" runat="server"
ConnectionString="<%$ ConnectionStrings:decoraconn %>"
SelectCommand="SELECT [picpath] FROM [SamplesPhoto] WHERE ([samples] = @samples)">
<SelectParameters>
<asp:Parameter DefaultValue="" Name="samples" Type="String" />
</SelectParameters></asp:SqlDataSource>
</td><td>名称:</td><td><a href="~/Samples/ShowSamples.aspx?id=<%#DataBinder.Eval(Container.DataItem, "s_id")%>" target="_blank"><%#DataBinder.Eval(Container.DataItem, "name")%></a></td></tr>
<tr><td>地址:</td><td><%#DataBinder.Eval(Container.DataItem, "address")%></td></tr>
<tr><td>风格:</td><td><%#DataBinder.Eval(Container.DataItem, "style")%></td></tr>
<tr><td>设计:</td><td><%#DataBinder.Eval(Container.DataItem, "designer")%></td><td>施工:</td><td><%#DataBinder.Eval(Container.DataItem, "work")%></td></tr>
</table>
</td>
</ItemTemplate>
<FooterTemplate></tr></table></FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="datasamples" runat="server"
ConnectionString="<%$ ConnectionStrings:decoraconn %>"
SelectCommand="SELECT TOP 3 [s_id], [name], [address], [style], [designer], [work] FROM [Samples] ORDER BY [date] DESC">
</asp:SqlDataSource>

要实现的功能类似于产品展示,文字信息存在一个数据库,产品的图片(很多张)以路径形式存在一个单独的数据库中,显示的时候,以文字信息中的标题为检索参数去读取图片数据库,请问我上面的代码应该怎么改?产品的图片数据库有一个字段是文字信息数据库中的一个字段(是关联的)
展开
 我来答
anthonywanted
推荐于2016-10-17 · 超过17用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:55.1万
展开全部
我假设你关联的是:图片中id外键关联文字信息的id主键, 你在RepeaterSamplesPhoto数据绑定的时候, 数据包括文字信息的id主键列
<asp:Repeater ID="RepeaterSamples" runat="server" DataSourceID="datasamples" OnItemDataBound="RepeaterSamples_ItemDataBound">

CodeBehind:
protected void RepeaterSamples_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
DataListItem item = e.Item;
DataRowView drv = (DataRowView)item.DataItem;
if (item.ItemType == ListItemType.AlternatingItem || item.ItemType == ListItemType.Item)
{
Repeater rpt = item.FindControl("RepeaterSamplesPhoto");
SqlConnection conn = new SqlConnection("连接字符串");
SqlCommand cmd = new SqlCommand("select * from 图片表 where id=" + drv["id"]);//从绑定的数据中获取ID
SqlDataAdapter sda = new SqlDataAdapter(cmd, conn);
DataSet ds;
conn.Open();
sda.Fill(ds);
conn.Colse();
rpt.DataSource = ds;
rpt.DataBind();
}
}
具体就是, 对Repeater的没个项, 判断是否item或alterningitem, 如果是就代表ItemTemplate的内容, 然后从绑定的数据中获取当前item的id, 然后在父Repeater中的item中寻找子Repeater, 对子进行数据绑定

代码是在Baidu里打的, 可能有点错误
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式