2010-10-23 64 views
4

CSS & html如何設置DIV類就是中繼器的內部在後面的代碼?

ID0是那種有背景的精靈形象,這裏面div..there的DIV類的鏈接(中繼器)的列表。當用戶將鼠標懸停links..the背景圖片的div顯示相應的精靈圖像的差異部分

現在我希望將類id1到id5設置爲中繼器的列表的類...現在我該如何去抵抗它?

像內部轉發的鏈接列表從DB..how未來做我創建這個中繼

內div標籤以及如何設置類爲每個將要創建的5個格的並在他們身上設置這些類?

像早些時候我有簡單的標記,但現在我必須生成使用中繼器的鏈接列表..我如何現在應用CSS?

請給一些ideas..thnx

[編輯] OK試過這種.. 添加div標籤直放站標籤後,在後面的代碼: - rpt1.FindControl( 「myDiv」)控制。新增(CLASS = ??)//怎麼在這裏輸入 使用for循環還是什麼? [編輯]這並不work..whats錯誤**

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迪麗mistake..made變化..

for (int i = 1; i < 6; i++) 
        { 
         string divClass = "id"; 
         rpt1.FindControl("myDiv").Controls.Add("class=id" + i); 

        } 

還是一樣的錯誤..

[編輯]

試過following..doesnt工作

rpt1.FindControl("myDiv").Attributes.Add("class","id" +i); 

我嘗試了現在以下..

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

它說「無法應用用[]索引到類型‘方法組’的表達」 ???

+0

幫助!!!! :(...您是如何在代碼中設置類的元素背後如果不是這樣? – Serenity 2010-10-23 11:19:26

回答

13

的ItemDataBinding方式

爲了獲得元素的保持中繼器的ItemTemplate內必須聲明它RUNAT =「服務器」,並設置一個ID爲它(ID是不是真的neccessary,但簡化了的東西)。如果你用你的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是在視圖使用數據綁定

<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++; 
} 
+0

我確實聲明瞭我:| – Serenity 2010-10-23 11:39:41

+0

我忘了施放返回值。爲了訪問Attributes集合,您需要將控件轉換爲HtmlGenericControl。 – PHeiberg 2010-10-23 13:07:55

+0

用正確的轉換更新了我的答案,並添加了一種替代方法,我認爲它對於屬性的簡單數據綁定 – PHeiberg 2010-10-23 13:32:15

1

我不知道我明白你想要達到什麼目的,但.Controls.Add(「classblah」)將不起作用。

這是爲了當你希望把控制在該控制,例如。

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

這將使大約

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

你想抓住李和操縱它的屬性。

var li = nav.FindControl("name") as HtmlGenericControl; 
nav.attributes["class"] = "mysprite id" + Container.DataItemIndex 
+0

我要的就是這五個CSS類應用到列表項的DIVS在repeater..plz告訴我什麼混亂。 。我LL clarify..alsoü可以PLZ檢查我的更新嗎?爲什麼不會工作? – Serenity 2010-10-23 11:29:01

+0

從我看到上面的DIV ID =「DIV1」是中繼器之外? – danswain 2010-10-23 11:37:42

+0

啊現在我得到它...別人給予什麼我會做 – danswain 2010-10-23 11:41:14

2

如果創建div作爲HTML控件,然後設置類是這樣的:

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

否則,如果你已經創造了它作爲服務器控件(由包括runat="server"屬性),那麼你可以在你內部搜索它並控制heirarchy並添加屬性。

+0

試圖that..its不給編譯錯誤F所列類型的現在,但它不是我懸停鼠標懸停在回地面links..the精靈形象是不會改變:( – Serenity 2010-10-23 11:45:27

+0

@Happy - 當你右鍵點擊 - >在呈現的頁面上查看源代碼,如果你期望的是div的class屬性嗎?如果是,那麼這是你的css類的一個問題。如果不是,那麼這是你添加屬性的方式的問題。並讓我們知道發生了什麼。 – slugster 2010-10-23 22:04:56

2

嘗試增加和ID和RUNAT = 「服務器」,以您的DIV標籤。這將使每個DIV控制:

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

這樣,您使用的是動態添加類的代碼行(下)應該工作:

rpt1.FindControl("myDiv").Attributes.Add("class","id" +i); 
+0

我沒有添加runtat屬性 – Serenity 2010-10-23 11:37:07

+0

其給我的錯誤「'System.Xml.Linq.Extensions.Attributes(System.Collections.Generic.IEnumerable ,System.Xml.Linq.XName)'是一個'方法',在給定的上下文中無效' – Serenity 2010-10-23 11:38:04

+0

我需要將這些代碼行寫入中繼器的ItemDataBound方法..right? – Serenity 2010-10-23 11:38:57

0

This是最好的

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