将ID设置为转发器itemtemplate内的控件

时间:2010-04-01 12:42:49

标签: asp.net

Inside repeater的itemtemplate我有一个Panel服务器控件 我需要为它分配特殊的ID,因为我需要使用一些使用此Id的javascript函数。

在转发器ItemDataBound事件中,我有这个:

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

但是这个解决方案并不好,因为在回发之后页面被重新渲染并且我丢失了新的ID。 (而且我不想在每次回发后重新启动转发器)

我尝试在aspx页面上设置ID:

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

以及其他一些变体,但总是会出现编译错误。

1 个答案:

答案 0 :(得分: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事件处理程序中获取Panel的ClientID并将其存储在某种类型的集合中(例如,键是项ID的字典,并且值是面板ClientID)。然后在填充转发器之后,您有一个列表,您可以将其作为javascript数组(或某些JSON事物,或任何适合您的客户端编码需求的东西)写入客户端。