У меня есть один выпадающий список (ddlCountryTax), содержащий все страны. Если я выберу США, он будет отображать сетку, отображающую налоговую информацию, связанную с США. Если я отредактирую информацию в сетке, и если мы изменим страну США на Великобританию в раскрывающемся списке в ddlCountryTax (не выпадающий список в окне редактирования сетки, нет проблем для этого) он отображает ошибку вроде
Указанный аргумент находится вне диапазона допустимых значений.
Имя параметра: ItemHierarchicalIndex
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и месте ее возникновения в коде.
Сведения об исключении: System.ArgumentOutOfRangeException: указанный аргумент находится вне диапазона допустимых значений. Имя параметра: ItemHierarchicalIndex
Ошибка источника:
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
Трассировка стека:
[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();
}
Это событие перед рендерингом:
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;
}
}
}
}