![](/img/trans.png)
[英]Invoking server side function from the client side for dynamically created markup
[英]Working with the “onclick” of a server side dynamically created TableRow
我正在动态创建一个表,我希望有可点击的行。 当用户单击其中一行时,我想重定向到特定于该行项目的页面。 我的问题是如何在服务器端将“onclick”事件连接到一个例程,然后允许我根据他们点击的行中包含的一些数据构建一个url?
例如,我想在点击时这样做:
Response.Redirect("SomePage.aspx?" itemType + "&" + COLUMN1VALUE)
;
其中COLUMN1VALUE将是单击行中的第一列。
听起来你的实际目标只是在另一页上显示/编辑行。 如果是这种情况,您只需在创建表行时添加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,您不需要完整的行点击体验。
我会在表中构建链接作为SomePage.aspx的实际锚标记(当你构建表时,你应该知道每个表行的查询字符串是什么),而不是重定向的服务器端控件在回发上
在您的单击事件处理程序中,您将发件人转换为按钮,然后获取其父项,直到您到达TableRow,然后执行FindControl()以查找具有该行特定值的控件并使用它来构建您的URL!
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.