c# - ASP.NET - 页面重新加载后 GridView 为空

标签 c# mysql asp.net visual-studio mysqldatareader

我正在使用 MySQL 数据库来存储一些数据,我的 ASP 项目中有一个页面,当您打开该页面作为标准结果时,该页面应该显示整个表。

事实上确实如此,但只有一次,如果您重新加载页面或直接转到另一个页面然后返回,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();
}

GridView :

<asp:GridView ID="GridDataView1" runat="server" EmptyDataText="No Data!">
</asp:GridView>

我的数据库类的查询方法:

public MySqlDataReader executeQuery(String command)
{
    try
    {
        MySqlCommand cmd = new MySqlCommand(command, this.conn);
        MySqlDataReader mdr = cmd.ExecuteReader();
        return mdr;

    }
    catch
    {
        return null;
    }
}

最佳答案

虽然您的答案有效,但您可以使用更好的习惯用法。由于 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();
    }
 }

关于c# - ASP.NET - 页面重新加载后 GridView 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54868823/

相关文章:

c# - DevExpress CustomRowFilter - 如何触发?

c# - 如何在绑定(bind)中将 FallbackValue 设置为外部图像文件的路径?

php - 使用 php 嵌入多次从 mysql 获取行

c# - 从 C# 修改任何窗口的不透明度

c# - WPF - 从 UserControl 操作 VisualState

php - Codeigniter where 子句不起作用

mysql - 查找两列之间的 DATEDIFF 并创建自己的列

ASP.NET : How can i maintain objects between postbacks?

javascript - 如何使用 javascript 更改基于另一个下拉列表的下拉列表值?

c# - 将时间转换为十进制