繁体   English   中英

使用服务器端的“onclick”动态创建TableRow

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM