Page_Load调用函数后无页面输出,问题到底出在哪里?
错误原因与修正方案
核心错误
代码仅完成了DataTable的创建与数据填充,从未将该表与页面渲染逻辑关联。ASP.NET Web Forms不会自动把后台代码生成的内存对象输出到页面,且Page_Load中调用GetTable()时未接收方法返回的DataTable实例,因此页面无任何内容展示。
可落地的修正方案
方案1:使用GridView控件绑定(推荐,维护性更高)
- 在
.aspx前端页面添加GridView服务器控件:
<asp:GridView ID="gvProvinceData" runat="server" AutoGenerateColumns="True" />
- 修改后端
Page_Load逻辑,接收返回值并完成绑定:
public void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { gvProvinceData.DataSource = GetTable(); gvProvinceData.DataBind(); } }
方案2:直接输出HTML渲染表格
如果不需要使用服务器控件,可直接将DataTable拼接为HTML通过响应流输出,修改Page_Load逻辑即可:
public void Page_Load(object sender, EventArgs e) { DataTable table = GetTable(); Response.Write("<table border='1' cellpadding='4'>"); // 输出表头 Response.Write("<tr>"); foreach (DataColumn col in table.Columns) { Response.Write($"<th>{col.ColumnName}</th>"); } Response.Write("</tr>"); // 输出数据行 foreach (DataRow row in table.Rows) { Response.Write("<tr>"); foreach (var val in row.ItemArray) { Response.Write($"<td>{val}</td>"); } Response.Write("</tr>"); } Response.Write("</table>"); }
内容的提问来源于stack exchange,提问作者user15422715
相关产品推荐
相关产品推荐

