2010-04-01 46 views
0

內部中繼器的項目模板我有一個面板服務器控件。
我需要爲它分配特殊的ID,因爲我需要使用一些使用此Id的JavaScript函數。設置中繼器項目模板內的控制ID

在直放站ItemDataBound事件我有這樣的:

pnlButtonsPanel.ID = pnlButtonsPanel.ID + DataBinder.Eval(e.Item.DataItem, "ID"); 

但因爲回傳該網頁重新渲染的後該解決方案是不好的,我失去了新的ID。 (我不希望每次回發後重新綁定中繼器)

我試圖設置aspx頁面上的ID這樣的:

<asp:Panel id='<%# Eval("ID") %>' 

和其他一些變化,但總要得到編譯錯誤。

回答

2

在asp.net 4.0中,你將能夠做到這一點。

現在正好是不是太有幫助...

一種方式做,這將是你的ID指定爲控件的CssClass屬性,然後使用jQuery客戶端找到它:

<asp:Panel id='panel_thingy' cssclass='<%# Eval("ID") %>' 

$(".123") // selector for panel with class (id) 123 

編輯:由於您沒有使用jQuery,這裏有兩種可能性。首先,您可以使用普通的<div>(不要在標籤中使用runat =「server」)來代替Panel控件。然後,您可以按照您想要的方式設置ID。

或者,如果這對您不適用,您可以在您的ItemDataBound事件處理程序中獲取面板的ClientID並將其存儲在某種類型的集合中(例如,鍵是項目ID的字典,值是面板ClientID)。然後,在中繼器填充後,您可以列出一個列表,您可以將其作爲JavaScript數組(或某些JSON事物,或適用於客戶端編碼需求的任何內容)寫入客戶端。

+0

對不起,但它不相關我沒有使用jquery – toraan 2010-04-01 13:52:26

+0

編輯添加一些更多的想法 – Ray 2010-04-01 14:23:39

+0

該div控制必須是服務器控制,因爲我也需要與他在代碼隱藏的東西。 – toraan 2010-04-01 15:41:49

相關問題