假設我有一些書的數據是這樣的:集團一個數據集與嵌套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