问题总结:
我正在向一个数据库发出请求,在该数据库中我基于用户提取创建的报告。
这些将在带有下载按钮的表格中列出,每个报告都可以在其中下载,用户可以在其中下载报告。
我需要知道单击按钮时将使用什么报告。这就是问题所在。
到目前为止,我的解决方案不会呈现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" />
一样使用,则可以,但是我无法挂钩允许我传递参数的代码隐藏事件。
感谢所有帮助。
答案 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框架为您提供的控件。
祝你好运!