我正在动态创建一个表,我希望有可点击的行。当用户单击其中一行时,我想重定向到特定于该行项目的页面。我的问题是如何在服务器端将“onclick”事件连接到一个例程,然后允许我根据他们点击的行中包含的一些数据构建一个url?
例如我想在点击时执行此操作:
Response.Redirect("SomePage.aspx?" itemType + "&" + COLUMN1VALUE)
;
其中COLUMN1VALUE将是单击行中的第一列。
答案 0 :(得分:2)
听起来您的实际目标只是在另一页上显示/编辑该行。如果是这种情况,您只需在创建表行时添加javascript事件处理程序即可。
<tr onclick="window.location='DetailPage.aspx?id=<%= IdFromDb %>'">
<!-- etc......-->
</tr>
如果使用GridView创建表,可以在RowDataBound事件中注入它:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string OnClickCmd = "window.location='DetailPage.aspx?id=";
if (e.Row.RowType == DataControlRowType.DataRow)
{
OnClickCmd += DataBinder.Eval(e.Row.DataItem, "IdFromDb").ToString() + "'";
e.Row.Attributes.Add("onclick", OnClickCmd);
}
}
除非您需要在回发中执行某些操作,否则无需重定向。此外,您可以在创建行时创建超链接,从而无需使用javascript,您不需要完整的行点击体验。
答案 1 :(得分:1)
我会在表中构建链接作为SomePage.aspx的实际锚标记(当你构建表时,你应该知道每个表行的查询字符串是什么),而不是服务器端在回发上重定向的控件
答案 2 :(得分:0)
在您的点击事件处理程序中,您将发件人转换为按钮,然后获取其父项,直到您到达TableRow,然后执行FindControl()以查找具有该行特定值的控件并使用它来构建您的URL!
祝你好运!