C# ASP.NET中继器控件中的GridView
我的ASPX页面中有以下标记代码C# ASP.NET中继器控件中的GridView,c#,asp.net,gridview,C#,Asp.net,Gridview,我的ASPX页面中有以下标记代码 <asp:Repeater ID="rep" runat="server"> <ItemTemplate> <asp:GridView ID="grdVw" runat="server" AutoGenerateColumns="true"> </asp:GridView> </ItemTemplate> </asp:Repeater>
<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;
}
受保护的无效页面加载(对象发送方,事件参数e)
{
数据集ds=新数据集();
对于(int i=0;i<5;i++)
{
Add(getDT());
}
rep.DataSource=ds.Tables;
rep.DataBind();
}
私有数据表getDT()
{
DataTable dt=新的DataTable();
dt.列。添加(“一”);
dt.列。添加(“两”);
dt.列。添加(“三”);
var row=dt.NewRow();
行[“一”]=“值1”;
行[“两”]=“值2”;
行[“三”]=“值3”;
dt.行。添加(行);
返回dt;
}
我的意图是根据数据集的表数拥有多个GridView。运行此代码后,我在页面上看不到任何内容。我不知道我到底做错了什么?这就是我可以给你的建议:
//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++;
}
希望这能有所帮助。您可以使用中继器的
OnItemDataBound
事件
<asp:Repeater ID="rep" runat="server" OnItemDataBound="rep_ItemDataBound">
<ItemTemplate>
<asp:GridView ID="grdVw" runat="server"></asp:GridView>
</ItemTemplate>
</asp:Repeater>
您可以尝试
grdVw
而不是rep
grdVw.DataSource=ds.Tables
如果我尝试grdVw.DataSource=ds.Tables
我会得到如下列:区分大小写的IsInitialized、RemotingFormat、DisplayExpression、HasErrors、MinimumCapacity、TableName、命名空间、前缀、DesignModecount=0;grd.DataSource=ds.Tables[count]代码>
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();
}