id0是div的类,它有背景作为精灵图像,在这个div里面。这是一个链接列表(在转发器中)..当用户将鼠标悬停在链接上时... div的背景图像显示差异相应的精灵图像部分
现在我希望将类id1到id5设置为转发器列表的类...现在我该怎么做呢?
就像转发器里面的链接列表来自DB ..如何在这个转发器内部创建div标签
如何为将要创建的5个div中的每一个设置类并在其上设置这些类?
像以前一样,我有简单的标记,但现在我必须使用转发器生成链接列表。那我现在如何应用CSS?请提出一些想法......谢谢
[编辑] 好的尝试过这个.. 在标签和后面的代码中在转发器中添加了div标签: - rpt1.FindControl(“myDiv”)。Controls.Add(class = ??)//在这里输入什么 用于循环或什么? [编辑]这不起作用..怎么回事?**
for(int i=1;i<6;i++)
{
rpt1.FindControl("myDiv").Controls.Add("class=id[i]");
}
上面给出了以下错误: -
'System.Web.UI.ControlCollection.Add(System.Web.UI.Control)'的最佳重载方法匹配有一些无效的参数
现在如何设置div的类?
pch..made dilly wrong..made changes ..
for (int i = 1; i < 6; i++)
{
string divClass = "id";
rpt1.FindControl("myDiv").Controls.Add("class=id" + i);
}
仍然是同样的错误..
[编辑]
尝试了以下......工作
rpt1.FindControl("myDiv").Attributes.Add("class","id" +i);
[编辑]
我现在尝试了以下内容..
rpt1.FindControl("myDiv").Attributes["class"] = "id" + i;
它说“不能将带有[]的索引应用于'方法组'”???
类型的表达式答案 0 :(得分:13)
ItemDataBinding方式
为了获得转发器的ItemTemplate中的元素,你必须声明它runat =“Server”并为它设置一个id(id不是必需的,但简化了事情)。如果您使用div执行此操作,则可以将其放入ItemDataBound event内并设置课程。
void Repeater_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item
|| e.Item.ItemType == ListItemType.AlternatingItem)
{
((HtmlGenericControl)(e.Item.FindControl("myDiv"))).
Attributes["class"] = "id" + index++;
}
}
您需要声明索引变量并在设置每个类时增加它。
替代方式
更简单,更简洁的方式IMHO是使用数据绑定直接在View中设置类
<asp:Repeater ID="rpt" runat="server">
<ItemTemplate><div class="<%# GetDivClass() %>">a div</div></ItemTemplate>
</asp:Repeater>
并在后面的代码中声明了获取数据的方法
private int index = 1;
protected string GetDivClass()
{
return "div" + index++;
}
答案 1 :(得分:2)
如果您将div
创建为HTML控件,请按以下方式设置类:
HtmlControl div = new HtmlGenericControl("div");
div.Attributes.Add("class", "myClassName");
否则,如果您已将其创建为服务器控件(通过包含runat="server"
属性),则可以在控件层次结构中搜索它并添加属性。
答案 2 :(得分:2)
尝试向DIV标记添加ID和runat =“server”。这将使每个DIV成为控件:
<li><a href=# class="mysprite id1">Text1<div id="myDiv" runat="server"> </div></a><br /></li>
这样,您用于动态添加类的代码行(如下所示)应该有效:
rpt1.FindControl("myDiv").Attributes.Add("class","id" +i);
答案 3 :(得分:1)
我不确定我是否理解你想要达到的目标,但是.Controls.Add(“classblah”)将不起作用。
当您希望将控件放在该控件中时,这是打算的,例如。
HyperLink myHyperLinkControl;
rpt1.FindControl("myDiv").Controls.Add(myHyperLinkControl);
将呈现近似
<div id="myDiv">
<a href="#">my hyperlink</a>
</div>
你想抓住li并操纵它的属性。
var li = nav.FindControl("name") as HtmlGenericControl;
nav.attributes["class"] = "mysprite id" + Container.DataItemIndex
答案 4 :(得分:0)
这是最好的
<asp:Repeater ID="rptDocuments" runat="server">
<ItemTemplate>
<div class='element<%# Container.ItemIndex%>'/>
</ItemTemplate>
</asp:Repeater>