Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在代码隐藏中继器内部的div上设置类?_C#_Asp.net_Html_Css - Fatal编程技术网

C# 如何在代码隐藏中继器内部的div上设置类?

C# 如何在代码隐藏中继器内部的div上设置类?,c#,asp.net,html,css,C#,Asp.net,Html,Css,id0是将背景作为精灵图像的div的类,在该div内部。当用户悬停在链接上时,会有一个链接列表(在repeater中)。div的背景图像会相应地显示精灵图像的不同部分 现在我想把id1到id5类设置为中继器列表中的类…现在我该怎么做呢 就像中继器内部的链接列表来自DB一样..如何在中继器内部创建div标记 如何为将要创建的5个div中的每一个设置类,并在其上设置这些类 像以前一样,我有简单的标记,但现在我必须使用一个转发器生成链接列表。那么我现在如何应用CSS呢 请给出一些想法 [编辑] 好的,

id0是将背景作为精灵图像的div的类,在该div内部。当用户悬停在链接上时,会有一个链接列表(在repeater中)。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]");

            }
[编辑]

我现在试了下列方法

rpt1.FindControl("myDiv").Attributes["class"] = "id" + i;

它说“不能将带[]的索引应用于“方法组”类型的表达式?”

我不确定我是否完全理解您要实现的目标,但是.Controls.Add(“classblah”)不起作用

这是为了当你想把一个控件放在那个控件中时

HyperLink myHyperLinkControl;
rpt1.FindControl("myDiv").Controls.Add(myHyperLinkControl);
这将使

<div id="myDiv">
<a href="#">my hyperlink</a>
</div>

如果将
div
创建为HTML控件,则按如下方式设置该类:

HtmlControl div = new HtmlGenericControl("div");
div.Attributes.Add("class", "myClassName");

否则,如果已将其创建为服务器控件(通过包含
runat=“server”
属性),则可以在控件继承权限内搜索该控件并添加该属性。

尝试将和ID以及runat=“server”添加到DIV标记中。这将使每个DIV成为一个控件:

<li><a href=# class="mysprite id1">Text1<div id="myDiv" runat="server">&nbsp;</div></a><br /></li>

项目数据绑定方式

为了在repeater的ItemTemplate中获得一个元素,您必须声明它runat=“Server”并为它设置一个id(id实际上不是必需的,但简化了事情)。如果你用你的div这样做,你可以把它放在你的字典里,然后设置类

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更简单、更清晰的方法是使用数据绑定直接在视图中设置类

<asp:Repeater ID="rpt" runat="server">
  <ItemTemplate><div class="<%# GetDivClass() %>">a div</div></ItemTemplate>
</asp:Repeater>
这是最好的

<asp:Repeater ID="rptDocuments" runat="server">
    <ItemTemplate>
        <div class='element<%# Container.ItemIndex%>'/>
</ItemTemplate>
</asp:Repeater>


帮助!!!!:(…如果不是这样,你如何为代码隐藏中的元素设置类?我只想将这五个css类应用到中继器中列表项的DIV中..请告诉我什么让人困惑..我会澄清..你还可以检查我的更新吗?为什么不起作用?从DIV id=“div1”上面我看到的是在中继器之外吗?啊,我现在明白了…其他人给出了我要做的事情,给了我一个错误“'System.Xml.Linq.Extensions.Attributes(System.Collections.Generic.IEnumerable,System.Xml.Linq.XName)”是一个“方法”,在给定的上下文中无效”我需要在repeater的ItemDataBound方法中写入这些代码行。对吗?如果将runat=“server”部分添加到div中,那么代码中已有的引号行(rpt1.Findcontrol…)现在应该能够访问该div的属性。它以前不起作用的原因是“Findcontrol”若要工作,您尝试查找的项目必须是web控件。尝试过..现在没有任何排序的编译错误,但不是我将鼠标悬停在链接上..后台的精灵图像没有更改:(@Happy-当你右键单击->在呈现页面上查看源代码时,你的div上的class属性是否如你所期望的那样?如果是这样,那么你的css类就有问题。如果不是这样,那么你添加属性的方式就有问题。看一看,让我们知道发生了什么。我忘记了转换返回值。为了访问属性,请lElection您需要将控件强制转换为HtmlGenericControl。使用正确的强制转换更新了我的答案,并添加了一种我认为对属性的简单数据绑定更干净的替代方法
rpt1.FindControl("myDiv").Attributes.Add("class","id" +i);
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++;
  }
}
<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++;
}
<asp:Repeater ID="rptDocuments" runat="server">
    <ItemTemplate>
        <div class='element<%# Container.ItemIndex%>'/>
</ItemTemplate>
</asp:Repeater>