添加onclick到div以从后面的代码重定向而不使用锚点

时间:2014-02-11 23:10:58

标签: c# javascript html asp.net

我觉得这是一个非常简单的解决方案,我忽略了某种方式。基本上我有一个带有数据列表的网页(使用asp.net webforms)。在我的datalist中,在datalist项目中,我有一个div,我希望用户能够单击以导致页面重定向。如果可能的话,我想在不使用锚点或javascript的情况下这样做。我的数据主义者:

<asp:DataList ID="DataList1" ..etc >
<HeaderTemplate>
..etc
</HeaderTemplate>
<ItemTemplate>
<table >
<tr >
<td>..etc</td>
<td>..etc</td>
<td ><div id="clr_div" runat = "server"></div></td> <-- this is the div to be clicked
</tr>
</table>
</ItemTemplate>

然后在我的代码背后

protected void on_item_databound(object sender, DataListItemEventArgs e)
{
     System.Web.UI.HtmlControls.HtmlGenericControl div = (System.Web.UI.HtmlControls.HtmlGenericControl)e.Item.FindControl("clr_div");
     div.Attributes.Add("onclick", "**What goes here??**");
}

我试图加入“这里有什么”部分:

window.location.href = \"default.aspx\" **doesn`t work, the quotes don`t render properly in html
window.location.href = default.aspx **doesn`t work
return Response.Redirect(default.aspx); **doesn`t work

欢迎任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

一旦您解决了div问题,列出的答案可以帮助您解决问题。我在使用静态定位时遇到非固定div中的事件触发问题,所以如果你在其他地方修改了div,你可能想尝试在你所包含的div上指定position:relative。

Difference between static and relative positioning

另外,TMTOWTDI。如果你有一个空的div,你也可以把它变成一个按钮,以获得无关紧要的标记费用

as explained here

只需将ItemCommand事件添加到您的datalist

即可
<asp:DataList ID="DataList1" onitemcommand="on_item_Command" ..etc..

并更改此

<div id="clr_div" runat = "server"></div>

到这个

<asp:Button id="clr_div" CommandName="nav-to-page" runat="server" CommandArgument='<%#  Eval("field to eval if this came from a datasource") %>'  />

并在代码中

protected void on_item_Command(object source, DataListCommandEventArgs e)
{
   if (e.CommandName == "nav-to-page")
   {
       string s = (string)e.CommandArgument;
       Response.Redirect("NewPage.aspx?" + s);
   }
}