C# ASP.NET中继器用户控件不显示数据

C# ASP.NET中继器用户控件不显示数据,c#,asp.net,user-controls,C#,Asp.net,User Controls,我有一个包含中继器的用户控件。我为中继器填充数据源,我已检查它包含数据,但中继器不显示任何数据。控件已正确添加到页面中 //aspx for user control <asp:Repeater runat="server"> <HeaderTemplate><table> <%# Eval("Name") %> </HeaderTemplate> //C# for user control

我有一个包含中继器的用户控件。我为中继器填充数据源,我已检查它包含数据,但中继器不显示任何数据。控件已正确添加到页面中

 //aspx for user control
 <asp:Repeater runat="server">
        <HeaderTemplate><table>
        <%# Eval("Name") %>
 </HeaderTemplate>

 //C# for user control
 public object DataSource { get; set; }
 protected void Page_Load(object sender, EventArgs e)
    {
        this.DataSource = DataSet;
        this.DataBind();
    }

//C# (code behind of aspx page where I want to use the repater user control)
repeater.DataSource = DataSet.ToArray();
repeater.DataBind();
你知道为什么这不起作用吗?

repeater.DataBind


ASP.NET控件不会自动绑定。

我相信HeaderTemplates不会绑定数据,它们只显示静态内容。您必须将要绑定的数据放入ItemTemplate或AlternatingItemTemplate中

我假设您在此省略了需要调用的DataBind语句。

请尝试以下方法:

    <asp:Repeater ID="repeater1" runat="server"> 
            <HeaderTemplate>
                <table class="datatable fullwidthpercent"> 
                   <tr>
                       <td>Name</td>
                   </tr>
            </HeaderTemplate>
            <ItemTemplate>
                   <tr>
                       <td><%# Eval("Name") %></td> 
                   </tr>
               </table>
            </ItemTemplate>
            <FooterTemplate>
               </table>
            </FooterTemplate>
   </asp:Repeater> 

并写入repeater1.DataBind;分配数据源属性后。

表中缺少标记这是您真正的标记还是只是草率的复制和粘贴?可能需要调用DataBind,但我认为OP也需要使用ItemTemplate谢谢您的回复,我添加了这个。我使用了调试器,正在为用户控件填充数据源,并调用了databind,但数据仍然没有显示。我使用了您答案中的aspx。我认为问题可能在于数据绑定,您需要在用户控件的页面加载方法中绑定它,还是在要在其中使用用户控件的文件的代码隐藏中绑定它?您只需要在可以访问repeater1的用户控件中绑定它。感谢您的帮助-我没有Reapter用户控件的ID属性。我在转发器用户控制代码后面添加了以下代码:this.repeater1.DataSource=DataSource;repeater1.DataBind;这就是对我有用的东西!我将Evaldatavalue移动到itemtemplate,bind在那里我没有将其包括在问题中。请添加一些解释,说明您的答案以及它与问题的相关性。
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        getdata();
    }

}
public void getdata()
{
    ds = objfun12.display();
    repeat12.DataSource = ds;
     repeat12.DataBind();

}