zoukankan      html  css  js  c++  java
  • Repeater 绑定数据实现 行字体,行背景变色问题

    今天做的项目正好遇到这个问题了。(特总结如下,汗~~ 发现自己不懂的太多。惭愧~~ 

    下面这种能实现 一行一行的变色。(感觉比较烦) (本文全部省略掉了 Repeater在后台的绑定代码)

    <asp:Repeater ID="Repeater1" runat="server" >
        <ItemTemplate>
           <table width="97%" height="25" border="0" align="center" cellpadding="0" cellspacing="0" style="border-bottom:1px #999999 dotted;">
             <tr id="row" runat="server">
               <td width="3%" align="center" class="cheng"> ·</td>
               <td width="97%" class="hei12" align=left>
                  <a href="#" title="<%#Eval("titleName")%>" target="_blank">
                    <font color='#ff0000'><%#Eval("titleName")%></font>(<%#Eval("AddTime", "{0:MM/dd}")%>) </a></td>
             </tr>
           </table>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <table width="97%" height="25" border="0" align="center" cellpadding="0" cellspacing="0" style="border-bottom:1px #999999 dotted;">
              <tr id="row" runat="server">
                <td width="3%" align="center" class="cheng">·</td>
                <td width="97%" class="hei12" align=left>
                  <a href="#" title="<%#Eval("titleName")%>" target="_blank">
                   <%#Eval("titleName")%></font>(<%#Eval("AddTime", "{0:MM/dd}")%>)                          </a>   </td>
              </tr>
            </table>
       </AlternatingItemTemplate>
     </asp:Repeater>

     

    如果要实现 两行行的背景色 红色,一行行的背景色黑色呢。   

    上面的方法中注意有<tr id="row" runat="server">

      下面的方法实现的是行的背景色变色。 前台的代码就可以省略<AlternatingItemTemplate>标签里面的内容并注意把<ItemTemplate> 里面的 <font color='#ff0000'> 删除掉。

     protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
     {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
          {
            if ((e.Item.ItemIndex + 1) % 3 == 0)
               {
                 ((HtmlTableRow)e.Item.FindControl("row")).BgColor= "#FF0000";
               }
           else
              {
                 ((HtmlTableRow)e.Item.FindControl("row")).BgColor= "#000000";   

              }
          }

     }

    如果你想实现的 文字的改变,既是两行文字 红色,一行文字黑色。 就需要在Repeater 的ItemDataBound 事件里面来操作了。代码如下 :

    前台就需要用 Lable 了。因为行 tr 标签不是很好实现你的需求了。当然应该是能实现,不过我没有试过,毕竟这比较简单

      <asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound" >
        <ItemTemplate>
         <table width="97%" height="25" border="0" align="center" cellpadding="0" cellspacing="0" style="border-bottom:1px #999999 dotted;">
            <tr>
               <td width="3%" align="center" class="cheng">·</td>
               <td width="97%" class="hei12" align=left>
               <a href="#" title="<%#Eval("titleName")%>" target="_blank">
                 <asp:Label ID="lblName" runat=server><%#Eval("titleName")%></asp:Label>(<%#Eval("AddTime", "{0:MM/dd}")%>)  </a>     </td>
            </tr>
         </table>
      </ItemTemplate>

     </asp:Repeater>

    后台ItemDataBound 事件 :

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      {
        if ((e.Item.ItemIndex + 1) % 3 == 0)
           {
             ((Label)e.Item.FindControl("lblName")).ForeColor = System.Drawing.Color.Black;
           }
        else
           {
             ((Label)e.Item.FindControl("lblName")).ForeColor = System.Drawing.Color.Red;
           }
      }
    }

    这样 就可以了。

  • 相关阅读:
    Linux 多进程锁的几种实现方案
    Linux man手册没有pthread_mutex_init的解决办法
    IP地址结构信息与字符串相互转化:inet_pton和inet_ntop, etc.
    Linux 将计算md5值功能做成md5命令
    Unix/Linux inet守护进程
    Unix/Linux syslogd守护进程 & 日志记录syslog
    UNP 学习笔记 #11 名字与地址转换
    git 使用总结
    AUPE 输出致标准错误的出错函数分析与实现 err_sys, err_quit, err_doit etc.
    Linux C常见数I/O函数比较: printf, sprintf, fprintf, write...
  • 原文地址:https://www.cnblogs.com/yibinboy/p/1432595.html
Copyright © 2011-2022 走看看