我有一个转发器,我使用How to add an attribute to repeater item at runtime?
中的代码点击了它现在我希望当我点击任何一个转发器项目时,它会重定向到另一个页面以及查询字符串..其值来自数据库,如(userid)。实际上,当我点击我想要重定向到用户详细信息页面的任何项目及其用户信息时,我想要做什么。
答案 0 :(得分:3)
您可以向itemRow添加另一个属性;):
row.Attributes["onclick"] = string.Format("window.location = '{0}';", ResolveClientUrl(string.Format("~/Default.aspx?userId={0}", e.Item.DataItem)) );
而不是使用e.Item.DataItem
,您可以将DataItem强制转换为具体类,并使用这样的类属性:
MyClass mc = e.Item.DataItem as MyClass;
row.Attributes["onclick"] = string.Format("window.location = '{0}';", ResolveClientUrl(string.Format("~/Default.aspx?userId={0}", mc.UserId)) );
通常,您可以在没有服务器端代码的转发器的ItemTemplate中的行上添加属性。所需要的只是将数据源中的相应字段绑定到属性:
<ItemTemplate>
<tr onmouseover="window.document.title = '<%# Eval("userId", "Click to navigate onto user {0} details page.") %>'"
onclick='window.location = "<%# ResolveClientUrl( "~/Default.aspx?userId=" + Eval("userid") ) %>"'>
<td>
<%# Eval("UserId") %>
</td>
</tr>
</ItemTemplate>