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

时间:2008-11-26 18:39:11

标签: c# asp.net controls

我正在动态创建一个表,我希望有可点击的行。当用户单击其中一行时,我想重定向到特定于该行项目的页面。我的问题是如何在服务器端将“onclick”事件连接到一个例程,然后允许我根据他们点击的行中包含的一些数据构建一个url?

例如我想在点击时执行此操作:

Response.Redirect("SomePage.aspx?" itemType + "&" + COLUMN1VALUE);

其中COLUMN1VALUE将是单击行中的第一列。

3 个答案:

答案 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!

祝你好运!