【问题标题】:GridView AllowPaging on asp.netasp.net 上的 GridView AllowPaging
【发布时间】:2011-04-26 16:49:47
【问题描述】:

我有一个gridview,我启用了分页并添加了事件处理程序。一切正常,除了我必须按每个数字两次才能更新。

下面是我用于初始加载的代码和对 pagesharing 事件处理程序的调用

protected void Page_Load(object sender, EventArgs e)
        {

            query = "SELECT log_id, use_username AS `Username`, log_type AS `Type`, "
                + "log_description AS `Description`, DATE_FORMAT(log_date, '%d-%m-%Y') AS `Date Created`, "
                + "DATE_FORMAT(log_time, '%H:%i') AS `Time Created` FROM log l, users u "
                + "WHERE l.log_userID = u.use_id";
            new DatabaseWork().loadGrid(query, tblLog);
            if (tblLog.Rows.Count == 0)
            {
                lblNoData.Visible = true;
            }

        }

protected void tblLog_PageChanging(object sender, GridViewPageEventArgs e)
        {
            new DatabaseWork().loadGrid(query, tblLog);
            tblLog.PageIndex = e.NewPageIndex;
        }

下面是用于将数据绑定到从上述两种方法调用的数据网格的代码

public void loadGrid(string query, GridView tblGrid)
        {
            using (DatabaseWork db = new DatabaseWork())
            {
                using (MySqlCommand cmd = new MySqlCommand(query, db.conn))
                {
                    using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                    {

                        DataSet ds = new DataSet();
                        da.Fill(ds);
                        tblGrid.DataSource = ds.Tables[0];
                        tblGrid.DataBind();
                    }

                }
            }

一切正常,只是每个页码都必须按两次,我不明白为什么。

感谢您的帮助。

【问题讨论】:

  • 不,没有更新面板,只是一个普通的 ASP 表单

标签: c# .net asp.net sql gridview


【解决方案1】:

您需要将此页面回发条件放在查询If(!Page.IspostBack)之前

protected void Page_Load(object sender, EventArgs e)
    {
      If(!Page.IspostBack)
      {
        query = "SELECT log_id, use_username AS `Username`, log_type AS `Type`, "
            + "log_description AS `Description`, DATE_FORMAT(log_date, '%d-%m-%Y') AS `Date Created`, "
            + "DATE_FORMAT(log_time, '%H:%i') AS `Time Created` FROM log l, users u "
            + "WHERE l.log_userID = u.use_id";
        new DatabaseWork().loadGrid(query, tblLog);
        if (tblLog.Rows.Count == 0)
        {
            lblNoData.Visible = true;
        }
      }
    }

编辑:

protected void tblLog_PageChanging(object sender, GridViewPageEventArgs e)
    {
       query = "SELECT log_id, use_username AS `Username`, log_type AS `Type`, "
        + "log_description AS `Description`, DATE_FORMAT(log_date, '%d-%m-%Y') AS `Date Created`, "
        + "DATE_FORMAT(log_time, '%H:%i') AS `Time Created` FROM log l, users u "
        + "WHERE l.log_userID = u.use_id";

        new DatabaseWork().loadGrid(query, tblLog);
        tblLog.PageIndex = e.NewPageIndex;
    }

【讨论】:

  • 我已经尝试了你的建议,但它得到一个异常'CommandText 属性尚未在 da.fill(ds) 上初始化;加载网格的类的部分。
  • @Boardy;检查编辑部分,tblLog_PageChanging 应该是我回答中的编辑部分。
  • @Muhammmad Akhtar,感谢您的帮助。对此很抱歉,但我已经按照您的建议做了,但仍然需要我按每个数字两次才能更新页面。
  • @Muhammaad Akhtar 谢谢你是对的,我唯一还需要改变的是恢复页面更改事件中的最后两行,因此它首先执行页面索引,然后从 DatabaseWork 调用 loadGrid 方法最后一节课。
【解决方案2】:

我猜问题是Page_LoadGridView_PageChanging 之前执行。

如果页面是第一次使用IsPostBack 属性加载,请尝试加载您的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2017-11-14
    • 2013-11-10
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多