2009-04-02 22 views
0

すべての国を含むdropdownbox(ddlCountryTax)が1つあります。米国を選択するとグリッド内の情報を編集するグリッドが表示されます。指定された引数が有効な値の範囲外だった

 
    Line 86: } 
    Line 87: 
    Line 88: if(rgStateTax.EditItems.Count > 0) 
    Line 89: { 
    Line 90: foreach(GridDataItem item in rgStateTax.Items) 

    Source File: c:\Projects\ACS\Aivea.Acs.Administration\UserControls\TaxManager.ascx.cs Line: 88 

スタックトレース:ddlCountryTaxのドロップダウンボックスで、英国(ないグリッドの編集ウィンドウに来てdropdownbox ,,そのため問題はない)には

Specified argument was out of the range of valid values.
Parameter name: ItemHierarchicalIndex
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: ItemHierarchicalIndex

ソースエラーのようなエラーを表示します:

 
[ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: ItemHierarchicalIndex] 
Telerik.WebControls.GridItemCollection.get_Item(String hierarchicalIndex) +323 
Telerik.WebControls.GridDataItemCollection.get_Item(String hierarchicalIndex) +37 
Telerik.WebControls.RadGrid.get_EditItems() +215 
Aivea.Acs.Administration.TaxManager.rgStateTax_PreRender(Object sender, EventArgs e) in c:\Projects\ACS\Aivea.Acs.Administration\UserControls\TaxManager.ascx.cs:88 
System.Web.UI.Control.OnPreRender(EventArgs e) +8682870 
System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e) +31 
Telerik.RadGridUtils.RadControl.OnPreRender(EventArgs e) +36 Telerik.RadGridUtils.RadAJAXControl.OnPreRender(EventArgs e) +37 
Telerik.WebControls.RadGrid.OnPreRender(EventArgs e) +40 
System.Web.UI.Control.PreRenderRecursiveInternal() +80 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842 

これは、コードのドロップダウンイベント

protected void ddlCountryTax_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     long locationId = ddlCountryTax.SelectedItem.Value.AsLong(); 

     ContentAdministrationServiceClient client = null; 
     List<DCTaxRate> taxRate = null; 
     try 
     { 
      client = new ContentAdministrationServiceClient(); 
      taxRate = client.GetTaxRatesByCountryIdAndLocationTypeName(locationId, "State"); 
      client.Close(); 
     } 
     catch(FaultException) 
     { 
      AbortClient(client); 
     } 

     rgStateTax.DataSource = taxRate; 
     rgStateTax.Rebind(); 

    } 

で、これはこれは、プリレンダリングイベントである

protected void rgStateTax_EditCommand(object sender, EventArgs e) 
    { 
     BindStateTax(); 
    } 


private void BindStateTax() 
    { 
     long locationId = ddlCountryTax.SelectedItem.Value.AsLong(); 

     List<DCTaxRate> taxRate = null; 
     ContentAdministrationServiceClient client = null; 
     try 
     { 
      client = new ContentAdministrationServiceClient(); 
      taxRate = client.GetTaxRatesByCountryId(locationId); 
      client.Close(); 
     } 
     catch(FaultException) 
     { 
      AbortClient(client); 
     } 

     rgStateTax.DataSource = taxRate; 
     rgStateTax.Rebind(); 
    } 

radgridです:何が起こっているのかについての

protected void rgStateTax_PreRender(object sender, EventArgs e) 
    { 
     if(rgStateTax.MasterTableView.IsItemInserted) 
     { 
      foreach(GridItem item in rgStateTax.Items) 
      { 
       item.Visible = false; 
      } 
     } 

     if(rgStateTax.EditItems.Count > 0) 
     { 
      foreach(GridDataItem item in rgStateTax.Items) 
      { 
       if(item != rgStateTax.EditItems[0]) 
       { 
        item.Visible = false; 
       } 
      } 
     } 
    } 
+0

プレビューを使用して、http:// stackoverflow/editing-helpを参照して、フォーマットが正しいことを確認してください。 –

+0

私はJeffがhttp://stackoverflow.com/editing-helpを意味すると思います –

+0

編集コマンドに何かを入れなければなりません – peter

答えて

1

私の推測グリッドを変更した後で、変更をコミットする前にグリッド内のデータ

グリッド内の変更の処理は、イベント後にグリッドデータを変更するように見えます。これを修正するには、グリッドデータを変更する前にグリッドの変更を処理するか、国が変更されたときにグリッドの変更を破棄する必要があります。

関連する問題