У меня есть одно раскрывающееся окно (ddlCountry), содержащее все страны, если я выберу США, он отобразит сетку, отображающую налоговую информацию, связанную с США. Если я редактирую информацию в сетке и если мы меняем страну США на Великобританию в раскрывающемся списке в ddlCountry (а не в раскрывающемся списке) в окне редактирования сетки, для этого нет проблем) отображается ошибка вроде
Указанный аргумент находится вне диапазона допустимых значений. Имя параметра: ItemHierarchicalIndex Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.
Сведения об исключении: System.ArgumentOutOfRangeException: указанный аргумент находится вне диапазона допустимых значений. Имя параметра: ItemHierarchicalIndex
Ошибка источника:
Строка 86:} Строка 87: Строка 88: if (rgStateTax.EditItems.Count> 0) Строка 89: {Строка 90: foreach (элемент GridDataItem в rgStateTax.Items)
Исходный файл: c: \ Projects \ ACS \ sample.Acs.Administration \ UserControls \ TaxManager.ascx.cs Строка: 88
Трассировки стека:
[ArgumentOutOfRangeException: указанный аргумент находится вне диапазона допустимых значений. Имя параметра: ItemHierarchicalIndex] Telerik.WebControls.GridItemCollection.get_Item (StringierarchicalIndex) +323 Telerik.WebControls.GridDataItemCollection.get_Item (String hierarchicalIndex) +37 Telerik.WebControlager.EbControls.Edgrid.get_example. rgStateTax_PreRender (отправитель объекта, EventArgs e) в c: \ Projects \ ACS \ sample.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.RadAJAXControl.OnPreRender (EventArgs.EventArgs. +40 System.Web.UI.Control.PreRenderRecursiveInternal () +80 System.Web.UI.Control.PreRenderRecursiveInternal () +171 System.Web.UI.Control.PreRenderRecursiveInternal () +171 System.Web.UI.Control.PreRenderRecursive () +171 Система m.Web.UI.Control.PreRenderRecursiveInternal () +171 System.Web.UI.Control.PreRenderRecursiveInternal () +171 System.Web.UI.Control.PreRenderRecursiveInternal () +171 System.Web.UI.Control.PreRenderRecursive +171 System.Web.UI.Control.PreRenderRecursiveInternal () +171 System.Web.UI.Page.ProcessRequestMain (логическое includeStagesBeforeAsyncPoint, логическое includeStagesAfterAsyncPoint) +842
это событие предварительной визуализации сетки (rgstatetax)
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;
}
}
}
Код в пользовательском интерфейсе
защищенный void ddlCountryTax_SelectedIndexChanged (отправитель объекта, 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);
throw;
}
rgStateTax.DataSource = taxRate;
rgStateTax.Rebind();
}
Код в слое оболочки
общедоступный список GetTaxRatesByCountryIdAndLocationTypeName (длинный countryId, строка locationTypeName) {DCTaxRateCollection taxRates = new DCTaxRateCollection (); taxRates.GetByCountryIdAndLoactionTypeName (countryId, locationTypeName);
return taxRates.ToList();
}
public void GetByCountryIdAndLoactionTypeName( long countryId, string locationTypeName )
{
IBOTaxRateCollection iboTaxRates = new BOTaxRateCollection();
iboTaxRates.GetByCountryIdAndLocationTypeName( countryId, locationTypeName );
SetItems( iboTaxRates );
}
В слое Бо
public void GetByCountryIdAndLocationTypeName( long countryId, string locationTypeName )
{
ISingleResult<TaxRate> taxRates = Database.TaxRateReadByCountryIdAndLocationTypeName( countryId, locationTypeName );
PopulateCollection( taxRates );
}