我的ASPX页面中有以下标记代码。
<asp:Repeater ID="rep" runat="server">
<ItemTemplate>
<asp:GridView ID="grdVw" runat="server" AutoGenerateColumns="true">
</asp:GridView>
</ItemTemplate>
</asp:Repeater>
在我的ASPX.CS页面下面的C#代码
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet();
for (int i = 0; i < 5; i++)
{
ds.Tables.Add(getDT());
}
rep.DataSource = ds.Tables;
rep.DataBind();
}
private DataTable getDT()
{
DataTable dt = new DataTable();
dt.Columns.Add("One");
dt.Columns.Add("Two");
dt.Columns.Add("Three");
var row = dt.NewRow();
row["One"] = "Value1";
row["Two"] = "Value2";
row["Three"] = "Value3";
dt.Rows.Add(row);
return dt;
}
我的目的是让多个网格视图取决于我的数据集的表数。运行此代码后,我在页面上看不到任何内容。我不知道我在这里做错了什么?
答案 0 :(得分:0)
我建议你这样做:
//after these lines
rep.DataSource = ds.Tables;
rep.DataBind();
//add below lines:
int count = 1;
foreach (RepeaterItem item in rep.Items)
{
var grd = item.FindControl("grdVw") as GridView;
grd.DataSource = ds.Tables[count - 1];
grd.DataBind();
count++;
}
希望这有帮助。
答案 1 :(得分:0)
您可以使用Repeater的OnItemDataBound
事件。
<asp:Repeater ID="rep" runat="server" OnItemDataBound="rep_ItemDataBound">
<ItemTemplate>
<asp:GridView ID="grdVw" runat="server"></asp:GridView>
</ItemTemplate>
</asp:Repeater>
然后在代码中找到嵌套的GridView并将正确的DataSet绑定到它。
protected void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
GridView gv = e.Item.FindControl("grdVw") as GridView;
gv.DataSource = ds.Tables[e.Item.ItemIndex];
gv.DataBind();
}