2011-12-01 60 views
0
Specified argument was out of the range of valid values. 
Parameter name: value 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. 
Parameter name: value 

Source Error: 

Line 95:  protected void changed(object sender, GridViewPageEventArgs e) 
Line 96:  { 
Line 97:   GridView1.PageIndex = e.NewPageIndex; 
Line 98:   //GridView1.DataBind(); 
Line 99:  } 


Source File: c:\Users\Sartaj\Desktop\web\Websites\Asp_website_projectv1\AddInventory.aspx.cs Line: 97 

Stack Trace: 

[ArgumentOutOfRangeException: Specified argument was out of the range of valid values. 
Parameter name: value] 
    System.Web.UI.WebControls.GridView.set_PageIndex(Int32 value) +1318287 
    AddInventory.changed(Object sender, GridViewPageEventArgs e) in c:\Users\Sartaj\Desktop\web\Websites\Asp_website_projectv1\AddInventory.aspx.cs:97 
    System.Web.UI.WebControls.GridView.OnPageIndexChanging(GridViewPageEventArgs e) +133 
    System.Web.UI.WebControls.GridView.HandlePage(Int32 newPage) +86 
    System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +464 
    System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +207 
    System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 


My gridview is-> 
<asp:GridView ID="GridView1" runat="server" EnableModelValidation="True" AutoGenerateColumns="true" 
     BackColor="#CCCCCC" BorderColor="Black" BorderStyle="None" BorderWidth="1px" 
     CellPadding="7" CellSpacing="5" AllowPaging="True" PageSize="1" OnPageIndexChanging="changed" > 
        <PagerSettings Mode="NextPrevious" /> 
        <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" /> 
        <HeaderStyle BackColor="#999999" Font-Bold="True" ForeColor="White" /> 
        <PagerStyle ForeColor="#0033CC" HorizontalAlign="Center" /> 
        <RowStyle BackColor="Silver" ForeColor="White" /> 
        <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" /> 
       </asp:GridView> 

**my backend code is->** 
protected void addInventoryButton_Click(object sender, EventArgs e) 
    { 
     addInventoryAllSelectDataSource.InsertParameters[0].DefaultValue = imeiText.Text; 
     addInventoryAllSelectDataSource.InsertParameters[1].DefaultValue = carrierDropDown.SelectedValue; 
     addInventoryAllSelectDataSource.InsertParameters[2].DefaultValue = ((int)d1[modelDropDown.SelectedIndex][0]).ToString(); 
     addInventoryAllSelectDataSource.InsertParameters[3].DefaultValue = costPriceText.Text; 
     addInventoryAllSelectDataSource.InsertParameters[4].DefaultValue = sellingPriceText.Text; 
     addInventoryAllSelectDataSource.InsertParameters[5].DefaultValue = dateText.Text; 
     addInventoryAllSelectDataSource.InsertParameters[6].DefaultValue = smartphoneRadioList.SelectedValue; 
     addInventoryAllSelectDataSource.InsertParameters[7].DefaultValue = transferOrderNoText.Text; 
     addInventoryAllSelectDataSource.InsertParameters[8].DefaultValue = Session["user"].ToString(); 
     addInventoryAllSelectDataSource.Insert(); 
     // gridList.Add(new AddImei(imeiText,carrierDropDown.SelectedValue,(((int)d1[modelDropDown.SelectedIndex][0]).ToString()) 
      // ,Convert.ToDouble(costPriceText.Text),Convert.ToDouble(sellingPriceText.Text),dateText.Text); 
     //GridView1.DataSource = gridList; 
     //GridView1.DataBind(); 
     //GridView1.DataSource = selectInventoryDataSource.Select(DataSourceSelectArguments.Empty); 
     //GridView1.DataBind(); 
     addInventoryAllSelectDataSource.SelectCommand = "SELECT A.IMEI,A.CARRIER, F.MAKE, F.MODEL, A.COST_PRICE,A.SELLING_PRICE,A.DATE,A.SMARTPHONE,A.TRANSFER_ORDER_NO,A.USER_ID FROM AddInventory AS A FULL OUTER JOIN "+carrierDropDown.SelectedValue+" AS F ON A.CARRIER_ID_INVENTORY = F.CARRIER_ID WHERE (A.IMEI = '"+imeiText.Text+"')"; 
     d3 = (DataView)addInventoryAllSelectDataSource.Select(DataSourceSelectArguments.Empty); 
     gridList.Add(new AddImei(d3[0][0].ToString(), d3[0][1].ToString(), d3[0][2].ToString(), d3[0][3].ToString(), Convert.ToDouble(d3[0][4]), Convert.ToDouble(d3[0][5]), Convert.ToDateTime(d3[0][6]).Date, Convert.ToBoolean(d3[0][7]), d3[0][8].ToString(), d3[0][9].ToString())); 
     //AddImei ob1=new AddImei(d3[0][0].ToString(), d3[0][1].ToString(), d3[0][2].ToString(), d3[0][3].ToString(), Convert.ToDouble(d3[0][4]), Convert.ToDouble(d3[0][5]), Convert.ToDateTime(d3[0][6]).Date, Convert.ToBoolean(d3[0][7]), d3[0][8].ToString(), d3[0][9].ToString()); 
     GridView1.DataSource = gridList; 
     GridView1.DataBind(); 
    } 

問題是,當我點擊下一頁,它不會改變頁面,我再次點擊,然後頁面更改。進入下一頁後,我點擊上一頁沒有任何變化,我再次點擊,然後我得到上述異常。我一直在尋找解決這個問題幾個小時,不能弄清楚我在這裏做錯了什麼。gridview分頁問題,​​參數超出範圍時去前一頁

回答

2

你要調用補GridView1的PageIndexChanged事件

protected void changed(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    this.fillGridView1(); 
} 
+0

後,我一定要創建fillGridView1方法的功能。 ?目前沒有? –

+0

現在它的工作,我遵循你的建議,並創建了fillGridView方法。 protected void changed(object sender,GridViewPageEventArgs e) GridView1.PageIndex = e.NewPageIndex; this.fillGridView1(); //GridView1.DataBind(); } private void fillGridView1() { GridView1.DataSource = gridList; GridView1.DataBind(); //拋出new NotImplementedException(); }我只是想問,這是做到這一點的最佳方式? –

+0

有很多方法可以獲得相同的結果,但我曾經這樣做過。 –