将参数从动态创建的HTML元素传递到onclick事件asp.net

时间:2019-08-02 11:50:22

标签: c# asp.net


问题总结: 我正在向一个数据库发出请求,在该数据库中我基于用户提取创建的报告。

这些将在带有下载按钮的表格中列出,每个报告都可以在其中下载,用户可以在其中下载报告。

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

到目前为止,我的解决方案不会呈现asp:button中的StringBuilder-元素。但是,如果我仅将其输入到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" />一样使用,则可以,但是我无法挂钩允许我传递参数的代码隐藏事件。

感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

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

这是网格视图示例: How to handle click event in Button Column in Datagridview?

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

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

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

祝你好运!