<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1" 
            onitemdatabound="Repeater1_ItemDataBound">            <ItemTemplate>
            <%# Eval("id") %><asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("title") %>'></asp:TextBox><br/>
            </ItemTemplate>
          
  </asp:Repeater>请问如何写满足以下要求的ItemDataBound事件?
title中含有"news"的一行的背景色都显示为红色,不仅包括asp:textbox的背景色,Eval("id") 的背景色也显示为红色,就如上的代码,不能改为td,tr标签

解决方案 »

  1.   

    你可以在后台拼出你想要样式的HTML后再绑定在模板上。
      

  2.   

    不用td,tr标签的话,我也不会做了
      

  3.   

    <%# Eval("id") %>就是纯文字,不设置外面容器的背景,纯文字是不能设置背景颜色的,
    你可以
     <div id="x" runat="server"><%# Eval("id") %><asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("title") %>'></asp:TextBox></div>这样换行,而不是通过br换行<%# Eval("id") %><asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("title") %>'></asp:TextBox><br/>
      

  4.   

    你可以这样
    <ItemTemplate>
      <div id="x" runat="server">
        <%# Eval("id") %><asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("title") %>'></asp:TextBox></div>
    </ItemTemplate>
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
      if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
      {
          
        TextBox TextBox1 = e.Item.FindControl("TextBox1") as TextBox;
        if (TextBox1.Text.IndexOf("news") > -1)
        {
          TextBox1.Style.Add("background-color", "red");
          HtmlGenericControl div = e.Item.FindControl("x") as HtmlGenericControl;
          div.Style.Add("background-color", "red");
        }
      }
    }