Repeater嵌套GridView实现主细表

zqtoo 2009-11-26 04:09:34
控件:

<div style="text-align:center">
<asp:Repeater ID="Repeater" runat="server">
<ItemTemplate>
<table border="1">
<tr><td><%#Eval("name") %> </td></tr>
<tr>
<td>
<asp:GridView ID="GridView" DataSource='<%#((System.Data.DataRowView)Container.DataItem).CreateChildView("dr") %>' runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical">
<Columns>
<asp:BoundField DataField="name" HeaderText="名称" ItemStyle-Width="200"/>
<asp:BoundField DataField="price" DataFormatString="{0}¥" HeaderText="价格" ItemStyle-Width="200"/>
</Columns>
<FooterStyle BackColor="#CCCCCC" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#CCCCCC" />
</asp:GridView>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</div>

数据绑定:

string sql = "select * from type;select * from product";
DataSet ds = da.GetDataSet(sql);
DataRelation dr = new DataRelation("dr", ds.Tables[0].Columns["id"], ds.Tables[1].Columns["type"]);
ds.Relations.Add(dr);
this.Repeater.DataSource = ds.Tables[0];
this.Repeater.DataBind();

显示效果:

...全文
295 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy664618843 2009-11-27
  • 打赏
  • 举报
回复
设置好它们主键 父与子的关系
tzs2304 2009-11-27
  • 打赏
  • 举报
回复
jf
zqtoo 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lijing3333 的回复:]
接分。。。  LZ下次押什么?
[/Quote]

每次都是押NBA赢分
xierfly 2009-11-26
  • 打赏
  • 举报
回复
路过,接分
我记得看得最早的是孟子的一篇文章里的实现,VB和c#两个版本的
wuyq11 2009-11-26
  • 打赏
  • 举报
回复
也可使用gridview嵌套gridview
e.Item.FindControl("gridview1") as GridView
悔说话的哑巴 2009-11-26
  • 打赏
  • 举报
回复
接分
lijing3333 2009-11-26
  • 打赏
  • 举报
回复
接分。。。 LZ下次押什么?
lizhengdao1314 2009-11-26
  • 打赏
  • 举报
回复
经过测试的,改下你的字段、表和提取数据方法即可。
前台:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
id:<%#Eval("ID")%>
carid:<%#Eval("car_id")%>
<asp:GridView ID="inGridView" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
SortExpression="ID" />
<asp:BoundField DataField="name1" HeaderText="name1" SortExpression="name1" />
<asp:BoundField DataField="sex" HeaderText="sex" SortExpression="sex" />
<asp:BoundField DataField="qu" HeaderText="qu" SortExpression="qu" />
</Columns>
</asp:GridView>
userid:<%#Eval("userID")%>
</ItemTemplate>
</asp:Repeater>

后台:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
GridView gridview = (GridView)e.Item.FindControl("inGridView");
DataRowView rowv = (DataRowView)e.Item.DataItem;
string id = Convert.ToString(rowv["car_id"]);//Repeater1中绑定中的数据,也即主表上和子表的关联字段
if (id != null && id != "")
{
string sqltext = "select top 5 id,name1,sex,qu from second where id='" + id + "'";
DataSet ds = datacontrol.getdatas(sqltext);//获取从数据,这里是我的数据提取类,换成你自己的数据提取方法
if (ds != null)
{
try
{
gridview.DataSource = ds;
gridview.DataBind();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}

}
zqtoo 2009-11-26
  • 打赏
  • 举报
回复
主要是今天押宝又赢了 发帖分给大家
CXSilence 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zengzhan 的回复:]
用 datalist嵌套gridview 数据绑定
[/Quote]
Repeater嵌套一样可以实现的……
ws_hgo 2009-11-26
  • 打赏
  • 举报
回复
老大的blog

http://blog.csdn.net/net_lover/archive/2006/12/10/1437535.aspx
qqzeng-ip 2009-11-26
  • 打赏
  • 举报
回复
用 datalist嵌套gridview 数据绑定
屌丝女士111 2009-11-26
  • 打赏
  • 举报
回复
你用datalist嵌套看看
Lovely_baby 2009-11-26
  • 打赏
  • 举报
回复
??什么意思啊

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧