2010-04-01 86 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