ASP.NET - 页面重新加载后 GridView 为空
ASP.NET - GridView empty after page reload
我正在使用 MySQL 数据库来存储一些数据,我的 ASP 项目中有一个页面应该显示整个 table,当你打开将页面作为标准结果。
事实上确实如此,但只有一次,如果您重新加载页面或直接转到另一个页面然后返回,GridView 不会显示。与数据库的连接仍然存在...
这是我的代码:
private Class.DB db;
protected void Page_Load(object sender, EventArgs e)
{
this.db = (Class.DB)Session["DBConnection"];
MySqlDataReader mdr = db.executeQuery(@"SELECT * FROM testtable;");
GridDataView1.DataSource = mdr;
GridDataView1.DataBind();
}
网格视图:
<asp:GridView ID="GridDataView1" runat="server" EmptyDataText="No Data!">
</asp:GridView>
我的数据库中的查询方法-class:
public MySqlDataReader executeQuery(String command)
{
try
{
MySqlCommand cmd = new MySqlCommand(command, this.conn);
MySqlDataReader mdr = cmd.ExecuteReader();
return mdr;
}
catch
{
return null;
}
}
通过调试修复,第一次绑定后忘记关闭DataReader。
代码应该是:
protected void Page_Load(object sender, EventArgs e)
{
this.db = (Class.DB)Session["DBConnection"];
MySqlDataReader mdr = db.executeQuery(@"SELECT * FROM testtable;");
GridDataView1.DataSource = mdr;
GridDataView1.DataBind();
mdr.Close();
}
希望我能帮上忙。
虽然您的答案有效,但您可以使用更好的成语。由于 MySqlDataReader
继承自 IDisposable
,您可以这样写:
protected void Page_Load(object sender, EventArgs e)
{
this.db = (Class.DB)Session["DBConnection"];
using (MySqlDataReader mdr = db.executeQuery(@"SELECT * FROM testtable;"))
{
GridDataView1.DataSource = mdr;
GridDataView1.DataBind();
}
}
我正在使用 MySQL 数据库来存储一些数据,我的 ASP 项目中有一个页面应该显示整个 table,当你打开将页面作为标准结果。
事实上确实如此,但只有一次,如果您重新加载页面或直接转到另一个页面然后返回,GridView 不会显示。与数据库的连接仍然存在... 这是我的代码:
private Class.DB db;
protected void Page_Load(object sender, EventArgs e)
{
this.db = (Class.DB)Session["DBConnection"];
MySqlDataReader mdr = db.executeQuery(@"SELECT * FROM testtable;");
GridDataView1.DataSource = mdr;
GridDataView1.DataBind();
}
网格视图:
<asp:GridView ID="GridDataView1" runat="server" EmptyDataText="No Data!">
</asp:GridView>
我的数据库中的查询方法-class:
public MySqlDataReader executeQuery(String command)
{
try
{
MySqlCommand cmd = new MySqlCommand(command, this.conn);
MySqlDataReader mdr = cmd.ExecuteReader();
return mdr;
}
catch
{
return null;
}
}
通过调试修复,第一次绑定后忘记关闭DataReader。 代码应该是:
protected void Page_Load(object sender, EventArgs e)
{
this.db = (Class.DB)Session["DBConnection"];
MySqlDataReader mdr = db.executeQuery(@"SELECT * FROM testtable;");
GridDataView1.DataSource = mdr;
GridDataView1.DataBind();
mdr.Close();
}
希望我能帮上忙。
虽然您的答案有效,但您可以使用更好的成语。由于 MySqlDataReader
继承自 IDisposable
,您可以这样写:
protected void Page_Load(object sender, EventArgs e)
{
this.db = (Class.DB)Session["DBConnection"];
using (MySqlDataReader mdr = db.executeQuery(@"SELECT * FROM testtable;"))
{
GridDataView1.DataSource = mdr;
GridDataView1.DataBind();
}
}