【问题标题】:ASP.Net Repeater controlASP.Net 中继器控件
【发布时间】:2009-05-26 16:58:43
【问题描述】:

我一直在尝试我所知道的一切来更改 asp:repeater 控件中一行的颜色。 我要做的是:基于一个值,我希望能够在转发器控件中设置记录的颜色。 我试过DIV标签,不能让它工作。 我该怎么做? 谢谢

【问题讨论】:

  • 分享您的代码?有很多方法可以做到这一点,我们需要知道您现有的代码是如何组合在一起的,或者我们只是在猜测。你可能会得到一些有用的东西,但也可能有更好的方法。
  • 当我尝试粘贴代码时,Stackoverflow 会截断代码。代码只是基本的Repeater控件,没什么花哨的。
  • 简化代码以在不发布整个内容的情况下理解重点

标签: asp.net repeater


【解决方案1】:

使用 ItemTemplate 中的 数据绑定语法进行条件格式化:

<asp:Repeater runat="server" ID="rpt">
  <ItemTemplate>
    <div class="<%# Container.ItemIndex % 2 ? "even" : "odd" %>">
    </div>
    <div class="<%# Eval("PropertyOfDataSource") %>">
    </div>
  </ItemTemplate>
</asp:Repeater>

【讨论】:

    【解决方案2】:

    在后面的代码中尝试这样的事情

      protected void rpt_OnItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.DataItem != null)
            {
                string color = (string)DataBinder.Eval(e.Item.DataItem, "RowColor");
                HtmlTableRow rowToColor = (HtmlTableRow)e.Item.FindControl("Row");
                rowToColor.Attributes.CssStyle.Add("background-color", color );
            }
        }
    

    在 aspx 页面中有类似的东西

    <asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_OnItemDataBound">
        <ItemTemplate>
            <tr id="Row" runat="server">
                <td>
                &nbsp;
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
    

    【讨论】:

      【解决方案3】:

      您可以通过很多不同的方式来解决这个问题,并且根据您的中继器需要的外观或您发送给它的数据,没有最佳答案。这是一个 hack 解决方法,它将评估数据并比较它以获得正确的颜色响应。

      在repeater的item模板中用一个div包围它。

      <div style="background-color:<%# GetBG((string)(DataBinder.Eval(Container.DataItem,"DataField")))%>">
      

      并且在代码后面有一个函数来决定

      public string GetBG(string demo)
          {
      
              if (demo == "TestData2")
                  return "yellow";
              return "Green";
          }
      

      这不是一个很好的方法,而且非常浪费。 onDataBind 函数会是更好的选择,只是想展示另一种完成此任务的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        相关资源
        最近更新 更多