我的gridview在前台绑定了datasource,当我点击按钮的时候,根据输入的条件查询数据库,然后把结果绑定到这个gridview上显示出来。但是会提示引发了未处理的gridview PageIndexChanging事件。从网上查询资料得知设置gridview的allowpaging属性为true并且自己定义PageIndexChanging方法,代码如下:
 
 GridView1.PageIndex = e.NewPageIndex;
 GridView1.DataBind();但是由于我自己定义了gridview的DataBound事件,所以在上面的PageIndexChanging事件执行GridView1.DataBind();的时候,就会触发gridview的DataBound事件,代码如下: //查询网点名称
        int i = 0;
        for (i = 0; i < GridView1.Rows.Count; i++)
        {
            SqlConnection con_GetParentPlaceName = new SqlConnection(S_DataExecute.dbconn);
            //根据第16列:网点编号。查询出网点名称并填充到第17列:上级机构名称
            SqlCommand cmd_GetParentPlaceName = new SqlCommand("select PlaceName from placeinfo where PlaceNO ='" + GridView1.Rows[i].Cells[16].Text.ToString().Trim() + "'", con_GetParentPlaceName);
            con_GetParentPlaceName.Open();
            SqlDataReader rd_ParentPlaceName = cmd_GetParentPlaceName.ExecuteReader();
            while (rd_ParentPlaceName.Read())
                GridView1.Rows[i].Cells[17].Text = rd_ParentPlaceName["PlaceName"].ToString();
            con_GetParentPlaceName.Close();        }
//查询结束PS:数据库的格式不能修改,要不我就不用这么头疼了。这样的结果导致了当我点击gridview的另外一页的时候,gridview就会显示EmptyDataText,说数据为空。但当我把PageIndexChanging事件里的GridView1.DataBind();注释掉的时候,虽然点击gridview的另外一页不会出现EmptyDataText但是必须要点击两次,才能显示该页。请问各位这个问题该怎么解决?谁能给个思路?谢谢!:)

解决方案 »

  1.   

    每次有新的查询就直接调用填充GridView的方法。
    至于单击两次才能显示新的,应该是数据填充问题
      

  2.   

    在页面绑定的时候要根据数据源了,数据源要包括搜索数据等子条件.
    请参考一下:
    http://www.cnblogs.com/onlyendure/archive/2008/04/28/1174579.html
      

  3.   

    在datasource的selecting事件里面每次要给定你检索的参数
     不然就会是空的
    我也遇到这样的问题
     查msdn才解决
      

  4.   

    谢谢各位!问题已经解决。
    解决方法:
    把计算行数的代码从Gridview的Databound事件里面拎出来作为一个单独的函数调用,在查询按钮的事件里面,每当gridview数据绑定以后调用此函数。去掉gridview的DataBound事件。
    THS各位!