【问题标题】:ASP.NET repeater user control not displaying dataASP.NET 转发器用户控件不显示数据
【发布时间】:2023-03-12 00:41:01
【问题描述】:

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

 //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();

任何想法为什么这不起作用?

【问题讨论】:

  • 和 标记在表中丢失
  • 这是你真正的标记还是只是草率的复制和粘贴?

标签: c# asp.net user-controls


【解决方案1】:

试试这个方法:

    <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(),但仍然没有显示数据。
  • 我使用了您回答中的 aspx。我认为问题可能出在数据绑定上,您需要在用户控件的页面加载方法中绑定它还是在要使用用户控件的文件后面的代码中绑定它?
  • 你需要在用户控件中绑定它,只有你可以访问repeater1的地方。
  • 感谢您的帮助 - 我没有 reapeter 用户控件的 ID 属性。我在后面的repeater用户控件代码中添加了如下代码:this.repeater1.DataSource = DataSource;
  • repeater1.DataBind(); 对我有用!
【解决方案2】:

repeater.DataBind();

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

【讨论】:

  • DataBind() 可能需要被调用,但我认为OP也需要使用ItemTemplate
【解决方案3】:

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

我假设你省略了 DataBind 语句,它也需要被调用。

【讨论】:

  • 我将 Eval("datavalue") 移至 itemtemplate 并绑定是否存在我没​​有将其包含在问题中。
【解决方案4】:
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        getdata();
    }

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

}

【讨论】:

  • 请对您的答案及其与问题的相关性进行一些解释。
猜你喜欢
相关资源
最近更新 更多
热门标签