C# ASP.NET中继器控件中的GridView

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>

我的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;
}
受保护的无效页面加载(对象发送方,事件参数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、命名空间、前缀、DesignMode
count=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();
}