2009-04-01 4 views
0

Ich habe eine Dropdownbox (ddlCountry) flag_allcountries_flagwear_flag_gifts enthält, Wenn i USA wählen wird es Raster angezeigt Steuer Anzeige von Informationen zu USA.If bezogenen i Informationen in Raster bearbeiten und wenn wir Land USA nach Großbritannien in Drop-Down ändern Box in der ddlCountry (nicht die Dropdown-Box kommt im Bearbeitungsfenster des Gitters, kein Problem dafür) es Anzeige Fehler wieDropdown-Box Index Ausgabe

angegeben Argument lag außerhalb des Bereichs der gültigen Werte. Parametername: ItemHierarchicalIndex Beschreibung: Bei der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stack-Trace für weitere Informationen über den Fehler und wo es aus dem Code stammt.

Ausnahmedetails: System.ArgumentOutOfRangeException: Das angegebene Argument lag außerhalb des gültigen Wertebereichs. Parametername: ItemHierarchicalIndex

Quellfehler:

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

Quelldatei: c: \ Projects \ ACS \ sample.Acs.Administration \ Usercontrols \ TaxManager.ascx.cs Line: 88

Stack Trace:

[ArgumentOutOfRangeException: Angegebenes Argument lag außerhalb des gültigen Wertebereichs. Parametername: ItemHierarchicalIndex] Telerik.WebControls.GridItemCollection.get_Item (String hierarchicalIndex) 323 Telerik.WebControls.GridDataItemCollection.get_Item (String hierarchicalIndex) +37 Telerik.WebControls.RadGrid.get_EditItems() +215 sample.Acs .Administration.TaxManager.rgStateTax_PreRender (Objektabsender, EventArgs e) in c: \ Projekte \ ACS \ sample.Acs.Administration \ UserControls \ TaxManager.ascx.cs: 88 System.Web.UI.Control.OnPreRender (EventArgs e) +8682870 System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender (EventArgse) +31 Telerik.RadGridUtils.RadControl.OnPreRender (EventArgse) +36 Telerik.RadGridUtils.RadAJAXControl.OnPreRender (EventArgse) +37 Telerik .WebControls.RadGrid.OnPreRender (EventArgs e) +40 System.Web.UI.Control.PreRenderRecursiveInternal() + 80 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web .UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

das ist das Gitter (rgstatetax) Prerender Ereignis

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; 
       } 
      } 
     } 

-Code in UI

protected void ddlCountryTax_SelectedIndexChanged (object sender, EventArgs e) { lang 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(); 

    } 

-Code in Wrapper-Schicht

public List GetTaxRatesByCountryIdAndLocationTypeName (long countryid, string 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); 
    } 

In Bo Schicht

public void GetByCountryIdAndLocationTypeName(long countryId, string locationTypeName) 
    { 
     ISingleResult<TaxRate> taxRates = Database.TaxRateReadByCountryIdAndLocationTypeName(countryId, locationTypeName); 
     PopulateCollection(taxRates); 
    } 

Antwort

1

Dies geschieht, wenn die Liste der Werte in der Dropdown-Liste enthält nicht den Wert an die SelectedValue Eigenschaft gebunden zu sein. Ist dies, weil Sie einen Nullwert haben könnten Sie den Datenadapter erhalten einen leeren String zurück, wenn das Feld Null ist (wenn das das Problem) und dann einen Wert in der Dropdown-Liste einfügen entsprechen:

<asp:DropDownList ID="dd_bound" runat="server" AppendDataBoundItems="True"> 
    <asp:ListItem Value="" Text="Select one..." /> 
</asp:DropDownList> 

Beachten Sie den Wert AppendDataBoundItems.

+0

ich machte appenddatabounditems zu wahren immer noch der gleiche Fehler kommt – peter

+0

Wissen Sie, was der Wert gebunden ist? ist es Null oder ein anderer Wert, der nicht in der Liste ist? – Richard

+0

lesen die landsammlung/list jenseits seiner bindung in das dropdown.Thats wat hier gehandelt ..Any way thanks 4 the replay – peter