asp.net - 将表行注入(inject)重复器项内

标签 asp.net repeater

我正在尝试注入(inject)中继器项目内部,问题是该行是在错误的位置生成的。
如果您尝试这个简单的示例,您将看到 rown 是在标签“2”下生成的,因为它应该在标签“1”下生成。

为什么会发生这种情况?以及如何解决这个问题?

protected void Page_Load(object sender, EventArgs e)
{
    int [] array = {1,2,3,4,5};
    rpt.DataSource = array;
    rpt.DataBind();     
}

protected string _extraRowHtml;
protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item ||
          e.Item.ItemType == ListItemType.AlternatingItem)
  {           
       int tmp = ((int)e.Item.DataItem);
       _extraRowHtml = tmp == 1 ? "<tr><td class=\"topicsRow\" colspan=\"100%\"> Topics </td></tr>" : string.Empty; ;                

  }
}

<asp:Repeater ID="rpt" runat="server" onitemdatabound="rpt_ItemDataBound">
    <HeaderTemplate>
       <table  cellpadding="0px" cellspacing="0">             
    </HeaderTemplate>            
    <ItemTemplate>     
      <tr style="height:50px">            
        <td>  

          <asp:HyperLink  ID="lnkTitle" runat="server" Text='<%# Container.DataItem%>'/>              
         </td>              
       </tr>
       <%# _extraRowHtml %>   
    </ItemTemplate>        
  <FooterTempl
    </table> 
  </FooterTemplate> 
</asp:Repeater>

最佳答案

我个人认为更好的做法是替换:

<%# _extraRowHtml %>

<%# GetExtraRow(Container.DataItem) %>

然后在你的代码中实现:

protected string GetExtraRow(object Data)
{
    int tmp = (int) Data:
    return _tmp == 1 ? 
        "<tr><td class=\"topicsRow\" colspan=\"100%\"> Topics </td></tr>" : 
        string.Empty;
}

然后删除 rpt_ItemDataBound 函数(以及 onItemDataBound)。

关于asp.net - 将表行注入(inject)重复器项内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2600633/

相关文章:

javascript - 在 Laravel 中使用数组将数据从 View ( Blade )传递到 Controller

asp.net - 嵌套中继器错误: Object reference not set to an instance of an object

javascript - 使用 JavaScript 访问 Repeater 值

c# - 在 Controller 级别设置 NullValueHandling

c# - 通过 Windows Phone 访问 WCF 服务

c# - ASP.NET无效的脚本资源请求而不是重定向

c# - 如何根据数据绑定(bind)到 ASP.NET 中该行的值在我的转发器中设置表行颜色?

Asp.Net Repeater ItemCommand 数据项始终为 null

asp.net - 如何替换默认的 Azure 403 错误页面

asp.net - 该页面的状态信息无效,并且可能已损坏,现在无法工作(在 Citrix 下)