首页 > 解决方案 > 将参数从动态创建的 HTML 元素传递给 onclick 事件 asp.net

问题描述


问题摘要:我正在向数据库发出请求,在该数据库中我根据用户获取创建的报告。

这些将列在一个带有下载按钮的表格中,每个报告都有一个下载按钮,用户可以在该按钮所在的位置下载报告。

我需要知道单击按钮时将使用什么报告。这就是问题所在。

到目前为止,我的解决方案不会asp:buttonStringBuilder. 但是如果我把它放在 HTML 文件中,只需要一个基本的输入,它就会显示出来。

我的代码如下所示:

SqlDataReader sqlReader = DataFromADatabaseRequest
StringBuilder table = new StringBuilder();
table.Append("<table border='1'>");
table.Append(
    "<tr>" +
    "<th>ID</th>" +
    "<th>Name</th>" +
    "<th>Prefix</th>" +
    "</tr>");
if (sqlReader.HasRows)
{
    while (sqlReader.Read())
    {
        string uniqueIdentifierToFindWhatButtonIsClicked = sqlReader["Prefix"].ToString();

        table.Append("<tr>");
        table.Append("<td>" + sqlReader["Id"] + " </td>");
        table.Append("<td>" + sqlReader["Name"] + " </td>");
        table.Append("<td> <asp:Button id="btn_" + uniqueIdentifierToFindWhatButtonIsClicked + "' class='btnDownloadFile' CommandName=" + uniqueIdentifierToFindWhatButtonIsClicked + "/> </td>");
        table.Append("</tr>");
    }
}
table.Append("</table>");

然后我将其发送tablestring到显示asp:placeholder此表的位置。一切正常。但按钮不会显示。

如果我像正常人一样使用<input type="button" />它,但我无法挂钩允许我传递参数的代码隐藏事件。

感谢所有帮助。

标签: c#asp.net

解决方案


.NET 已经具有用于动态生成带有按钮的行的控件。看看 ASP 中继器项目。您还可以将数据网格视图控件与模板列一起使用。有很多例子。不要试图重新发明轮子,我的朋友。:)

这是网格视图示例: 如何处理 Datagridview 中按钮列中的单击事件?

请注意,如果您需要逐行处理事情……例如更改按钮文本或样式或启用基于特定行数据的控件,您可以在绑定的项目数据中编写自定义代码。

这是行数据绑定技术: https ://www.c-sharpcorner.com/UploadFile/1e050f/rowdatabound-event-in-gridview-in-Asp-Net/

掌握动态表格数据和 Web 表单功能的诀窍是完全理解 .NET 框架为您提供的控件。

祝你好运!


推荐阅读