girdview 如果不是自动绑定数据源,而是自己设定的
,总是提示激发了未处理的事件“PageIndexChanging“我从网上找到方法:
一要在girdview 后面加 OnPageIndexChanging="GridView1_PageIndexChanging                二要cs页面中添加    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
       GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataBind();   
    }
结果发现当我点击第二页的时候gridview中就没有东西了,我想是不是第二页也是新的page-load,原来赋给的数据源没有了,后来从网上看说应该这样:   
 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        //分页有问题。
        //GridView1.datasource = "数据源";               //引用刚才建立的数据源
        GridView1.DataBind();
    }
可是我的sql语句是有变化的,数据源可能不一样。我又想把sql设置成static的,结果还是不行。我感觉好像是第二页是个新的load,而我在新的load中有用到sql语句,并且从上个页面request到了数据影响了sql语句。
现在没有办法了,怎么解决这个问题。

解决方案 »

  1.   

    一个简单的方法
    把你的数据源存到viewstate里如
    viewstate["ds"]=ds;
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            //这么用
             GridView1.datasource = (dataset)viewstate["ds"];        
            GridView1.DataBind();
        } 
      

  2.   

    根据request获得参数影响了sql语句?
    把你的sql语句写出来看看
      

  3.   

    <table width="745" border="0" cellpadding="0" cellspacing="0" style="display: none;
                                                                padding-top: 5px" id="tb_fy">
                                                                <tr>
                                                                    <td width="192" align="right">
                                                                        <asp:Literal ID="lb_num" runat="server"></asp:Literal>
                                                                        <td width="60" align="center" class="hui912">
                                                                            <asp:LinkButton ID="ibt_first" runat="server" Text="第一页" OnClick="ibt_first_Click" /></td>
                                                                        <td width="60" style="width: 42px" align="center">
                                                                            <asp:LinkButton ID="ibt_pre" runat="server" Text="上一页" OnClick="ibt_pre_Click" /></td>
                                                                        <td width="60" align="center">
                                                                            <asp:LinkButton ID="ibt_next" runat="server" Text="下一页" OnClick="ibt_next_Click" /></td>
                                                                        <td align="center" width="60">
                                                                            <asp:LinkButton ID="ibt_last" runat="server" Text="最后一页" OnClick="ibt_last_Click" /></td>
                                                                        <td align="center" width="35">
                                                                            转到</td>
                                                                        <td width="35">
                                                                            <asp:TextBox ID="tb_pageindex" runat="server" Width="30px"></asp:TextBox></td>
                                                                        <td width="23">
                                                                            页</td>
                                                                        <td width="38" style="width: 35px">
                                                                            <asp:ImageButton ID="bnt_go" runat="server" ImageUrl="images/btn_go.gif" OnClick="bnt_go_Click"
                                                                                OnClientClick="return isOpage()" /></td>
                                                                </tr>
                                                            </table>protected void ibt_first_Click(object sender, EventArgs e)
        {
            gv_main.PageIndex = 0;
            bindGrid();
        }
        protected void ibt_pre_Click(object sender, EventArgs e)
        {
            if (gv_main.PageIndex > 0)
            {
                gv_main.PageIndex--;
            }
            bindGrid();
        }
        protected void ibt_next_Click(object sender, EventArgs e)
        {
            if (gv_main.PageIndex < gv_main.PageCount - 1)
            {
                gv_main.PageIndex++;
            }
            bindGrid();
        }
        protected void ibt_last_Click(object sender, EventArgs e)
        {
            gv_main.PageIndex = gv_main.PageCount - 1;
            bindGrid();
        }
        protected void bnt_go_Click(object sender, ImageClickEventArgs e)
        {
            if (tb_pageindex.Text != string.Empty) gv_main.PageIndex = Convert.ToInt32(tb_pageindex.Text) - 1;
            bindGrid();
        }
      

  4.   

    最好把绑定数据写在一个方法里,比如BindData();
    然后
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 

         GridView1.PageIndex = e.NewPageIndex; 
         BindData();

      

  5.   

    把GridView1_PageIndexChanging中的代码删除,无需再次处理!
      

  6.   

    alter procedure liujie @student1 int,
     @student2 int,
     @Clumn varchar(80),
     @table varchar(80)
    asdeclare @sql varchar(500)
    begin  set @sql='select * from '+@table+' where '+@Clumn+' in(select top '+convert(varchar,@student1*@student2)+'  '+@Clumn+' from '+@table+') and '+@Clumn+' not in(select top '+convert(varchar,(@student1-1)*@student2)+'  '+@Clumn+' from '+@table+')'
      execute(@sql)end