假设我有一些书的数据是这样的:集团一个数据集与嵌套Repeater
而且我有喜欢SELECT * FROM BookData
查询,输出其按上述格式。
我想在一个HTML <table>
,这将是这个样子使用嵌套Repeater控件输出的数据,由作者将数据分组结果:
到目前为止,我有我的ASP .NET Web表单代码看起来像这样:
<table>
<asp:Repeater ID="RepeaterInner" runat="server">
<ItemTemplate>
<tr>
<td><asp:TextBox Text='<%# Eval("Book") %>' /></td>
<td><asp:TextBox Text='<%# Eval("Author") %>' /></td>
<td><asp:TextBox Text='<%# Eval("PublishDate") %>' /></td>
<td><asp:TextBox Text='<%# Eval("Pages") %>' /></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
和我的身后这个代码:
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = GetData();
RepeaterInner.DataSource = ds;
RepeaterInner.DataBind();
}
private DataSet GetData()
{
string CS = ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
using (SqlCommand cmd = new SqlCommand("spGetData"))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
con.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
return ds;
}
}
}
最终产品,我希望它看起来像这样:
<table>
<asp:Repeater ID="RepeaterOuter" runat="server">
<ItemTemplate>
<tr>
<td><asp:TextBox Text='<%# Eval("Author") %>' /></td>
</tr>
<asp:Repeater ID="RepeaterInner" runat="server">
<ItemTemplate>
<tr>
<td><asp:TextBox Text='<%# Eval("Book") %>' /></td>
<td><asp:TextBox Text='<%# Eval("PublishDate") %>' /></td>
<td><asp:TextBox Text='<%# Eval("Pages") %>' /></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
</table>
但我对如何做才能使上面的发生真的很困惑。可以用我的一个存储过程生成的上面的一个DataSet
完成吗?如果有任何事情,我需要为每个Repeater的事件处理程序做些什么?
谢谢。
什么是'在'data.GroupBy(书data' => book.Author,(作者,书籍) '?它不存在于'Page_Load'事件中 – Micro 2014-10-02 15:52:24
@MicroR这是你有的数据,你想用来填充你的中继器 – Servy 2014-10-02 15:54:21
我拥有的数据是在DataSet中,并且没有DataSet。 GroupBy'。那么什么对象具有'.GroupBy'? – Micro 2014-10-02 16:11:13