我做的是一个评论页面。 浏览者发表后,后台有一个审核。我想做的效果是,没通过审核的话,该行的背景色就变红。(问题1)绑定repeater以后如何设置哦,比如我想让内容字段 ,只显示100字  ,用label显示。如何弄?(问题2)
求大虾们不吝赐教。最好展示几句代码,这里很模糊。谢谢
   
 protected void DisplayRepeater()
    {
        this.Repeater1.DataSource = bll.GetAllComments();
        this.Repeater1.DataBind();    
    }

解决方案 »

  1.   

    <%# Eval("content").ToString().length>100?Eval("content").ToString().Substring90,100):Eval("content").ToString()%>
    <%# (bool)Eval("audit")?"<font ..":""%>public string setColor(bool b){
    return b?"color:red":"color:white";
    }
    style="setColor(<%#Eval(""))" protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                HtmlTableRow tr = (HtmlTableRow)e.Item.FindControl("tr");
                switch (e.Item.ItemIndex)
                {
                    case 0:
                        tr.BgColor = "Red";
                        break;
                    case 1:
                        tr.BgColor = "Blue";
                        break;
                    default:
                        break;
                }
            }
        }
      

  2.   

    在你的repeater控件的项模板里最外层放一个层,运行在服务器上:
    <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
    <div runat="server">里面的控件放在这里</div>
    <br />
    </ItemTemplate>
    </asp:Repeater>
    后台先绑定repeater,然后判断是否审核,比如第4条记录没审核:
    (Repeater1.Items[3].Controls[1] as HtmlGenericControl).Style.Add("background", "red");
    注意前面加上using System.Web.UI.HtmlControls;
      

  3.   

    绑定:<asp:Label id="label1" runat="server" Text='<%#Eval("content").Tostring().Lenght>100?Eval("content").Tostring().SubString(0,100):Eval("content").Tostring()%>'
    变色:1楼大哥说的就可以实现
      

  4.   

    1楼那个 变色的哪个是axps页面的?哪个是后台的? 有点晕。。
      

  5.   

    数据库里设置个是否审核了的字段,然后取出并判断true=red,false=color.?
      

  6.   

    有的 我现在问题是这样了,判断是绑定前?还是绑定后?是判断数据源还是,还是从控件取值判断?以前用gridview做的就是先绑定数据,然后从页面的控件取值,然后判断这个值。比如  我的一个封邮件是否重要,如果重要就把它显示成红色,那个我会把这个是否重要字段的值赋到控件,然后在遍历gridview 然后再找出这个控件。然后在拿它的值判断。我感觉这样好繁琐?不知道什么办法优化的?我在试4楼的方法。但是那个
     protected void DisplayRepeater()
        {
            //分页控件
            PagedDataSource pdsblog = new PagedDataSource();
            //设置数据源
            pdsblog.DataSource = bll.GetAllComments();
            //设置允许分页
            pdsblog.AllowPaging = true;
            //每页显示为20行标题
            pdsblog.PageSize = 15;
            //获得当前页索引
            pdsblog.CurrentPageIndex = Pager;
            //显示当前页数。总共页数
            this.lblCurrentPage.Text = (pdsblog.CurrentPageIndex + 1).ToString() + "/" + pdsblog.PageCount.ToString() + "页";        SetEnable(pdsblog);        //把PagedDataSource 对象赋给repeater控件 
            this.Repeater1.DataSource = pdsblog;
            this.Repeater1.DataBind();
            for (int i = 0; i < this.Repeater1.Items.Count; i++)
            {
              LinkButton lnbtn = this.Repeater1.Items[i].FindControl("LinkButton1") as LinkButton;   //这个lnbtn就是绑定 是否审核字段的 [/ color]
              if (lnbtn.Text.Equals("0"))          
            {
                 (Repeater1.Items[i].Controls[1] as System.Web.UI.HtmlControls.HtmlGenericControl).Style.Add("background", "red");
            [color=#FF0000] // lnbtn.Style.Add("background", "red");   //这个可以改变掉,4楼提供的那句代码 不知道为什么没效果
     
              }
            }  求大家指点一下!
      

  7.   

    在Repeater的ItemDataBound事件中进行:
        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            LinkButton lnbtn = this.Repeater1.Items[i].FindControl("LinkButton1") as LinkButton;
            if (lnbtn.Text.Equals("0"))
            {
                HtmlControl c = (HtmlControl)e.Item.FindControl("Div1");
                c.Attributes.Add("style", "background-color:#ff0000;");
            }
        }
    html:
                <ItemTemplate>
                <div id="Div1" runat="server">
    ...........
                  </div>
                </ItemTemplate>
      

  8.   

    11楼有错!!应该是:
        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            LinkButton lnbtn = (LinkButton)e.Item.FindControl("LinkButton1");        if (lnbtn.Text.Equals("0"))
            {
                HtmlControl c = (HtmlControl)e.Item.FindControl("Div1");
                c.Attributes.Add("style", "background-color:#ff0000;");
            }
        }
      

  9.   


    我现在用的是1楼的方法可以获取tr,然后找到该LinkButton1的text 判断后,设置 tr.BgColor = "red";ItemCommand事件里加上这段代码点击LinkButton1  也就是界面上的 0按钮 然后这个按钮的值会变化。对应更新了数据库(0代表未审核,1审核通过,spam为垃圾评论)现在终于实现了效果。谢谢各位的帮助。
    还有12楼的方法会有异常。

    HtmlGenericControl c = (HtmlGenericControl)e.Item.FindControl("div11");
    c.Attributes.Add("style", "background-color:red;");
    base {System.Web.UI.Control} = {InnerText = “((System.Web.UI.HtmlControls.HtmlContainerControl)(((System.Web.UI.HtmlControls.HtmlGenericControl)(c)))).InnerText”引发了“System.Web.HttpException”类型的异常}
    我不知道是什么原因,是类型转的出错了吗?