我做的是一个评论页面。 浏览者发表后,后台有一个审核。我想做的效果是,没通过审核的话,该行的背景色就变红。(问题1)绑定repeater以后如何设置哦,比如我想让内容字段 ,只显示100字 ,用label显示。如何弄?(问题2)
求大虾们不吝赐教。最好展示几句代码,这里很模糊。谢谢
protected void DisplayRepeater()
{
this.Repeater1.DataSource = bll.GetAllComments();
this.Repeater1.DataBind();
}
求大虾们不吝赐教。最好展示几句代码,这里很模糊。谢谢
protected void DisplayRepeater()
{
this.Repeater1.DataSource = bll.GetAllComments();
this.Repeater1.DataBind();
}
<%# (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;
}
}
}
<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;
变色:1楼大哥说的就可以实现
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楼提供的那句代码 不知道为什么没效果
}
} 求大家指点一下!
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>
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;");
}
}
我现在用的是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”类型的异常}
我不知道是什么原因,是类型转的出错了吗?