出错的原因是你的分页方法里面少了一条语句
DataSet   ds   =   GetCarList(); 
this.gdvCarList.DataSource   =   ds; 把绑定方法提取出来好一点。
private void Bind()
{
    this.gdvCarList.DataSource   =   GetCarList(); 
                
    gdvCarList.DataBind(); }在你的分页方法里面调用。
Bind()方法。

解决方案 »

  1.   

    应该不是page_load()引起的
    应该是引起的:
    protected   void   gdvCarList_PageIndexChanging(object   sender,   GridViewPageEventArgs   e)
            {
                    gdvCarList.PageIndex   =   e.NewPageIndex;
                    gdvCarList.DataBind();
            } 因为你只给出了gdvCarList.DataBind();,有了绑定方法,你还的绑定数据源,我想应该是这样的,我一直这样做没有出现过问题
    protected   void   gdvCarList_PageIndexChanging(object   sender,   GridViewPageEventArgs   e)
            {
                    gdvCarList.PageIndex   =   e.NewPageIndex;
                    DataSet   ds   =   GetCarList();
                    this.gdvCarList.DataSource   =   ds;               
                    gdvCarList.DataBind();
            } 
      

  2.   

    感谢各位大哥,但我现在加了这两条语句,
                                         DataSet       ds       =       GetCarList(); 
                                    this.gdvCarList.DataSource       =       ds;
    还是报索引超出范围,真急啊:
      

  3.   

    DataSet ds=GetCarList();   
    gdvCarList.PageIndex = e.NewPageIndex;
    gdvCarList.DataSource = ds;
    gdvCarList.DataBind();
      

  4.   

    private void Bind()
    {
        this.GridView1.DataSource = (DataSet)this.ViewState["ds"];
        this.GridView1.DataBind();
    }
    private void Page_Load(.....,.....)
    {
        if(!Ispostback)
        {
            DataSet ds = new DataSet();
            假设ds已经有了内容
             .................
            this.ViewState["ds"] = ds;
            Bind();
        }
    }protected void gdvCarList_PageIndexChanging(...,....) 

       this.GridView1.PageIndex = e.NewPageIndex; 
       Bind();

      

  5.   

    ASP.NET 2.0中Gridview的分页与排序
    remex 著于2007-9-6 9:02:56
    ASP.NET 2.0中,Gridview取代了以前的datagrid控件,本文解释如何在Gridview控件中进行分页、排序以及添加按钮控件(控制其显示/隐藏)。
      

  6.   

    (1) 你先单独写个数据绑定的方法,如:
    pulic void DataBound()
    {
         DataSet   ds   =   GetCarList(); 
         this.gdvCarList.DataSource   =   ds;
         this.gdvCarList.DataBind();
    }(2)分页代码
    protected   void   gdvCarList_PageIndexChanging(object   sender,   GridViewPageEventArgs   e) 
            { 
                    gdvCarList.PageIndex   =   e.NewPageIndex1; 
                    DataBound()  //调用上面的绑定方法
              } 
    附:如果: gdvCarList.PageIndex   =   e.NewPageIndex1;出来的效果还是不对,那你用 gdvCarList.PageIndex   =   e.NewPageIndex1-1试下看看;
    (3)
    protected   void   Page_Load(object   sender,   EventArgs   e) 
            { 
                     if (!Page.IsPostBack)
                       { 
                            DataBound();  //调用上面的绑定方法
                         }
            {
            } 
      

  7.   

    感谢各位大哥的热心,但还是有问题,我把代码附上,望大家能帮个忙:
    .cs文件:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using MagicAjax;public partial class Sys_CarInfoList : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataSet ds = GetCarList();
                this.gdvCarList.DataSource = ds;            gdvCarList.DataBind();
            }
               }
        protected void btnCarQry_Click(object sender, EventArgs e)
        {
            DataSet ds = GetCarList();
            this.gdvCarList.DataSource = ds;
            gdvCarList.DataBind();    }
        protected DataSet GetCarList()
        {
            string strBeginTime = this.txtBeginDate.Text.ToString().Trim();
            string strEndTime = this.txtEndDate.Text.ToString().Trim();
            string strBrand = this.txtBrand.Text.ToString().Trim();        SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connectionString"].ToString());
            SqlCommand cmd = new SqlCommand("SHOWCARLIST", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@BRAND", SqlDbType.VarChar));        cmd.Parameters.Add(new SqlParameter("@BEGINTIME", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@ENDTIME", SqlDbType.VarChar));
            cmd.Parameters[0].Value = strBrand;        cmd.Parameters[1].Value = strBeginTime;
            cmd.Parameters[2].Value = strEndTime;
            DataSet ds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sda.Fill(ds);
            return ds;    }
        protected void gdvCarList_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gdvCarList.PageIndex = e.NewPageIndex;
            DataSet ds = GetCarList();
            this.gdvCarList.DataSource = ds;
            gdvCarList.DataBind(); 
           
        }
        protected void gdvCarList_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Detail":
                    Button btn = e.CommandSource as Button;
                    GridViewRow row = btn.Parent.Parent as GridViewRow;                string strCarDtl = this.gdvCarList.DataKeys[row.DataItemIndex].Value.ToString().Trim();
                    //string strCarDtl = this.gdvCarList.Rows[row.DataItemIndex].Cells[1].Text.ToString().Trim();
                    Response.Redirect("/WebSys/Sys/CarInfoDetail.aspx?valueId=" + strCarDtl);
                    break;
                case "Modify":
                    Button btnM = e.CommandSource as Button;
                    GridViewRow rowM = btnM.Parent.Parent as GridViewRow;                string strCarMdy = this.gdvCarList.DataKeys[rowM.DataItemIndex].Value.ToString().Trim();
                    Response.Redirect("/WebSys/Sys/CarInfoUpdate.aspx?valueId=" + strCarMdy);
                    break;
                case "Drop":
                    Button btnD = e.CommandSource as Button;
                    //btnD.Attributes.Add("onclick", "return confirm('你确定要删除所选择的数据项吗?');");
                    GridViewRow rowD = btnD.Parent.Parent as GridViewRow;
                    string strCarDel = this.gdvCarList.DataKeys[rowD.DataItemIndex].Value.ToString().Trim();
                    int intTmpDel = Convert.ToInt32(strCarDel);
                    DelItem(intTmpDel);
                    break;
                default:
                    break;
            }
        }
        protected void btnNew_Click(object sender, EventArgs e)
        {
            Response.Redirect("/WebSys/Sys/CarInfoInsert.aspx");
        }
        protected void DelItem(int intItemId)
        {
            //MagicAjax.AjaxCallHelper.Write("");
            SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connectionString"].ToString());
            string strDel = "delete salecarinfo where salecarinfo_id=" + intItemId;
            SqlCommand cmd = new SqlCommand(strDel, conn);
            conn.Open();
            int intFlag = cmd.ExecuteNonQuery();
            conn.Close();
            //gdvCarList.DataBind();        if (intFlag > 0)
            {
                DataSet ds = GetCarList();
                this.gdvCarList.DataSource = ds;
                gdvCarList.DataBind();        }
            else
            {
                MagicAjax.AjaxCallHelper.WriteAlert("删除失败!");
            }    }    protected void gdvCarList_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //if (e.Row.RowType == DataControlRowType.DataRow)
            //{
            //    //Button btn = e.Row.Cells[7].Controls[0] as Button;
            //    e.Row.Cells[7].Attributes.Add("onclick", "<script>return confirm('你确认要删除吗?');</script>");        //}
        }
    }
    ----------------------------------------------------------------.aspx文件:<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="CarInfoList.aspx.cs" Inherits="Sys_CarInfoList" Title="汽车信息列表" %><%@ Register Assembly="MagicAjax" Namespace="MagicAjax.UI.Controls" TagPrefix="ajax" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
        <ajax:AjaxPanel ID="AjaxPanel1" runat="server">
        <table cellspacing="1" style="width: 600px" cellpadding="2">
            
            
            <tr>
            <td colspan="2" class="tdLeng">
                <asp:GridView ID="gdvCarList" runat="server" Style="position: static" Width="600px" AutoGenerateColumns="False" AllowPaging="True" DataKeyNames="SALECARINFO_ID" OnPageIndexChanging="gdvCarList_PageIndexChanging" OnRowCommand="gdvCarList_RowCommand" OnRowDataBound="gdvCarList_RowDataBound">
                    <Columns>
                        <asp:TemplateField HeaderText="详情">
                            <ItemTemplate>
                                <asp:Button ID="btnGdvDetail" runat="server" CommandName="Detail" Style="position: static"
                                    Text="查看" Width="60px" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="SALECARINFO_ID" HeaderText="ID"  />
                        <asp:BoundField DataField="SHOP_COMPANY_NAME" HeaderText="所属商家" />
                        <asp:BoundField DataField="SALECARINFO_DENGJISHIJIAN" HeaderText="登记时间" DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="False" />
                        <asp:BoundField DataField="BRAND_VEHICLE_BRAND" HeaderText="品牌" />
                        <asp:BoundField DataField="MODEL_NAME" HeaderText="车型" />
                        <asp:BoundField DataField="TYPE_NAME" HeaderText="车种" />
                        <asp:BoundField DataField="GRADE_NAME" HeaderText="型号" />
                        <asp:TemplateField HeaderText="修改">
                            <ItemTemplate>
                                <asp:Button ID="btnGdvEdit" runat="server" CommandName="Modify" Style="position: static"
                                    Text="修改" Width="60px" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="删除">
                            <ItemTemplate>
                                <asp:Button ID="btnGdvDelete" runat="server" CommandName="Drop" Style="position: static"
                                    Text="删除" Width="60px" OnClientClick="return confirm('您确认要删除吗?')"  />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </td>
            </tr>
            </table>
            </td>
            </tr>
         </table>
           </ajax:AjaxPanel>
    </asp:Content>
      

  8.   

    分页后点查看时总在红字处报索引超出范围。但若是第一页就不会报错。
    case   "Detail": 
                                    Button   btn   =   e.CommandSource   as   Button; 
                                    GridViewRow   row   =   btn.Parent.Parent   as   GridViewRow;                                 string   strCarDtl   =   this.gdvCarList.DataKeys[row.DataItemIndex].Value.ToString().Trim(); 
                                    //string   strCarDtl   =   this.gdvCarList.Rows[row.DataItemIndex].Cells[1].Text.ToString().Trim(); 
                                    Response.Redirect("/WebSys/Sys/CarInfoDetail.aspx?valueId="   +   strCarDtl); 
                                    break;