This is a migrated thread and some comments may be shown as answers.

RadGrid export to excel return Index was out of range

2 Answers 154 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Estudios-Electricos
Top achievements
Rank 1
Estudios-Electricos asked on 16 Dec 2014, 04:51 PM
I have the following scenario
- a group of filter , and a Button "Consultar". This button fill the radgrid. (that's working Ok).
- When I try to export to excel the  get "Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index"
This error starts today when I change from free library to the  new library with license.

This is my code:

ASPX:
    <%@ MasterType VirtualPath="~/UI/EstudiosElectricos.Master" %>
        <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content>
        <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
            <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
                <AjaxSettings>
                    <telerik:AjaxSetting AjaxControlID="btnCalcular">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="lblTotal" />
                            <telerik:AjaxUpdatedControl ControlID="pnlValores" LoadingPanelID="LoadingPanel" />
                            <telerik:AjaxUpdatedControl ControlID="tablaFecha" LoadingPanelID="LoadingPanel" /> </UpdatedControls>
                    </telerik:AjaxSetting>
                    <telerik:AjaxSetting AjaxControlID="btnExportToXLS">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="Panel1" LoadingPanelID="LoadingPanel" />
                            <telerik:AjaxUpdatedControl ControlID="btnExportarXLS" LoadingPanelID="LoadingPanel" />
                            <telerik:AjaxUpdatedControl ControlID="Listado" LoadingPanelID="LoadingPanel" /> </UpdatedControls>
                    </telerik:AjaxSetting>
                    <telerik:AjaxSetting AjaxControlID="grillaListado">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="grillaListado" LoadingPanelID="LoadingPanel" /> </UpdatedControls>
                    </telerik:AjaxSetting>
                    <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="Panel1" LoadingPanelID="LoadingPanel" />
                            <telerik:AjaxUpdatedControl ControlID="btnExportToXLS" UpdatePanelRenderMode="Inline" LoadingPanelID="LoadingPanel" />
                            <telerik:AjaxUpdatedControl ControlID="Listado" UpdatePanelRenderMode="Inline" LoadingPanelID="LoadingPanel" />
                            <telerik:AjaxUpdatedControl ControlID="grillaListado" LoadingPanelID="LoadingPanel" /> </UpdatedControls>
                    </telerik:AjaxSetting>
                </AjaxSettings>
            </telerik:RadAjaxManagerProxy>
            <div id="Div1">
                <asp:Panel ID="Panel2" GroupingText="Filtros" runat="server" CssClass="pnlFiltroGrande">
                    <asp:Table runat="server" CssClass="Tabla" ID="tablaFecha">
                        <asp:TableHeaderRow>
                            <asp:TableCell CssClass="columna1">Año Desde</asp:TableCell>
                            <asp:TableCell CssClass="columna1">Año Hasta</asp:TableCell>
                            <asp:TableCell CssClass="columna1">Tipo de Proyecto</asp:TableCell>
                            <asp:TableCell CssClass="columna1">País</asp:TableCell>
                            <asp:TableCell CssClass="columna3">
                                <telerik:RadButton ID="btnLimpiar" TabIndex="5" runat="server" AutoPostBack="true" Text="Limpiar" ToolTip="Limpiar los filtros y resultados" OnClick="btnLimpiar_Click">
                                    <Icon PrimaryIconUrl="~/UI/Imagenes/limpiar.png" PrimaryIconWidth="21px" PrimaryIconHeight="25px" PrimaryIconTop="3px" PrimaryIconLeft="5px" /> </telerik:RadButton>
                            </asp:TableCell>
                        </asp:TableHeaderRow>
                        <asp:TableRow>
                            <asp:TableCell CssClass="columna1">
                                <telerik:RadNumericTextBox ID="ntxtAnioDesde" TabIndex="0" runat="server" NumberFormat-DecimalDigits="0" NumberFormat-GroupSeparator="" Type="Number" MaxLength="4" MinValue="2000" MaxValue="2200"></telerik:RadNumericTextBox>
                                <label class="validador">*</label>
                                <asp:RequiredFieldValidator ID="fvAnioDesde" runat="server" ControlToValidate="ntxtAnioDesde" ValidationGroup="filtro"></asp:RequiredFieldValidator>
                            </asp:TableCell>
                            <asp:TableCell CssClass="columna1">
                                <telerik:RadNumericTextBox ID="ntxtAnioHasta" TabIndex="1" runat="server" NumberFormat-DecimalDigits="0" NumberFormat-GroupSeparator="" MaxLength="4" Type="Number" MinValue="2000" MaxValue="2200"></telerik:RadNumericTextBox>
                            </asp:TableCell>
                            <asp:TableCell CssClass="columna1">
                                <telerik:RadComboBox ID="cbTipoProyecto" runat="server" TabIndex="2">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="Ensayos" Value="1" />
                                        <telerik:RadComboBoxItem Text="Estudios" Value="2" />
                                        <telerik:RadComboBoxItem Text="Capacitación" Value="3" />
                                        <telerik:RadComboBoxItem Text="Otros" Value="4" /> </Items>
                                </telerik:RadComboBox>
                            </asp:TableCell>
                            <asp:TableCell CssClass="columna1">
                                <telerik:RadComboBox ID="cbPaises" runat="server" TabIndex="4" Width="80%"> </telerik:RadComboBox>
                            </asp:TableCell>
                            <asp:TableCell CssClass="columna3">
                                <telerik:RadButton ID="btnBuscar" TabIndex="4" runat="server" AutoPostBack="true" Text="Buscar" ToolTip="Buscar antecedentes entre años" OnClick="btnCalcular_Click">
                                    <Icon PrimaryIconUrl="~/UI/Imagenes/buscar.png" PrimaryIconWidth="21px" PrimaryIconHeight="25px" PrimaryIconTop="3px" PrimaryIconLeft="5px" /> </telerik:RadButton>
                            </asp:TableCell>
                        </asp:TableRow>
                    </asp:Table>
                </asp:Panel>
                <asp:Panel runat="server" GroupingText="Antecedentes" Style="display: none" ID="pnlValores" ScrollBars="Auto" CssClass="pnlValores" Height="85%">
                    <asp:ImageButton ID="btnImprimir" OnClientClick="Imprimir()" runat="server" ToolTip="Imprimir Pantalla" ImageUrl="~/UI/Imagenes/impresora.png"></asp:ImageButton>
                    <asp:ImageButton ID="btnExportToXLS" runat="server" ToolTip="Exportar a Excel" ImageUrl="~/UI/Imagenes/iconoxls.png" OnClick="btnExportToXLS_Click"></asp:ImageButton>
                    <telerik:RadGrid ID="grillaListado" runat="server" AllowPaging="false" AllowSorting="true" AutoGenerateColumns="false" EnableLinqExpressions="false"   >
                        <MasterTableView Caption="Antecedentes" UseAllDataFields="true">
                            <Columns>
                                <telerik:GridBoundColumn DataField="numeroOC" HeaderText="Número OC" ItemStyle-Width="10%"></telerik:GridBoundColumn>
                                <telerik:GridBoundColumn DataField="empresa" HeaderText="Empresa OC" ItemStyle-Width="15%"></telerik:GridBoundColumn>
                                <telerik:GridBoundColumn DataField="codigoEE" HeaderText="Codigo EE" ItemStyle-Width="8%"></telerik:GridBoundColumn>
                                <telerik:GridBoundColumn DataField="fecha" HeaderText="Fecha OC" DataType="System.DateTime" DataFormatString="{0:dd/MM/yy}" ItemStyle-Width="8%"></telerik:GridBoundColumn>
                                <telerik:GridBoundColumn DataField="titulo" HeaderText="Título Proyecto" ItemStyle-Width="39%"></telerik:GridBoundColumn>
                                <telerik:GridBoundColumn DataField="pais" HeaderText="País Proyecto" ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Left"></telerik:GridBoundColumn>
                                <telerik:GridBoundColumn DataField="moneda" HeaderText="Moneda" ItemStyle-Width="3%" ItemStyle-HorizontalAlign="Center"></telerik:GridBoundColumn>
                                <telerik:GridBoundColumn DataField="total" HeaderText="Total" ItemStyle-Width="8%" ItemStyle-HorizontalAlign="Right"></telerik:GridBoundColumn>
                            </Columns>
                        </MasterTableView>
                    </telerik:RadGrid>
                </asp:Panel>
            </div>
            <telerik:RadCodeBlock ID="indexBlockCode" runat="server">
                <script type="text/javascript">
                    loadCSS("/UI/Estilos/ControlesUsuarios/listados.css");

                    function Imprimir() {
                        var radGrid = $find('<%= grillaListado.ClientID %>');
                        radGrid.MasterTableView.get_element().style.fontSize = "10px";
                        var anioDesde = $find('<%= ntxtAnioDesde.ClientID %>').get_value();
                        var anioHasta = $find('<%= ntxtAnioHasta.ClientID %>').get_value();
                        var tproyecto = $find('<%= cbTipoProyecto.ClientID %>').get_selectedItem().get_text();
                        var pais = $find('<%= cbPaises.ClientID %>').get_selectedItem().get_text();
                        var previewWnd = window.open('about:blank', 'Antecedentes', '', false);
                        var styleStr = "<html><head><title>Antecedentes</title></head>";
                        var htmlcontent = styleStr +"<body> <label style='font-size:10px'>Año desde:" + anioDesde + " - hasta " + anioHasta + " Tipo de Proyecto: " + tproyecto + " País: " + pais + "</label><br/>" + radGrid.get_element().outerHTML + "</body></html>";
                        previewWnd.document.open();
                        previewWnd.document.write(htmlcontent);
                        previewWnd.document.close();
                        previewWnd.print();
                        previewWnd.close();
                    }
                </script>
            </telerik:RadCodeBlock>
        </asp:Content>

C#:
      protected void Page_Load(object sender, EventArgs e)
        {
          
            Inicializar(); if (!Page.IsPostBack)
            { Fcombos.CargaPaises(cbPaises); cbPaises.Items.Insert(0, new Telerik.Web.UI.RadComboBoxItem("-- Todos los países ---", "0"));
              ntxtAnioHasta.Value = DateTime.Now.Year; ntxtAnioDesde.Value = DateTime.Now.AddYears(-1).Year; 
            }
            
        }
        private void Inicializar()
        { _notificacion = (((EstudiosElectricos)this.Master).ObtenerControlNotificacion()); }
        protected void btnCalcular_Click(object sender, EventArgs e)
        {
            DateTime comenzo = DateTime.Now;
            LlenaGrilla();
            ((EstudiosElectricos)this.Master).tiempoTotal = String.Format("{0:0.00}", (DateTime.Now.Subtract(comenzo)).TotalSeconds) + " Segs";
        }
        private void LlenaGrilla()
        {
            Page.Validate("filtro"); if (!Page.IsValid) { grillaListado.DataSource = null; return; }  pnlValores.Style.Add("display", "block"); List<eeConsultas.eeAntecedentes> lValores = eeConsultas.eeAntecedentes.BuscarProyectos((int)ntxtAnioDesde.Value, (int)ntxtAnioHasta.Value, (short)Convert.ToInt16(cbTipoProyecto.SelectedValue), (short)Convert.ToInt16(cbPaises.SelectedValue)); grillaListado.DataSource = lValores; grillaListado.DataBind();
        }
        protected void btnLimpiar_Click(object sender, EventArgs e)
        { cbPaises.Items.Clear(); Fcombos.CargaPaises(cbPaises); pnlValores.Style.Add("display", "none"); btnExportToXLS.Style.Add("display", "none"); grillaListado.DataSource = null; }
        protected void btnExportToXLS_Click(object sender, ImageClickEventArgs e)
        {
            try
            {

                grillaListado.MasterTableView.Caption = "    Antecedentes  " + Environment.NewLine + "Año Desde - Hasta: " + ntxtAnioDesde.Value.ToString() + "-" +
                      ntxtAnioHasta.Value.ToString() + " Tipo de Proyecto: " + cbTipoProyecto.Text + "  País: " + cbPaises.Text;
                grillaListado.ExportSettings.Excel.Format = GridExcelExportFormat.Biff; grillaListado.ExportSettings.IgnorePaging = true; 
                grillaListado.ExportSettings.ExportOnlyData = true; grillaListado.ExportSettings.OpenInNewWindow = true;
                grillaListado.ExportSettings.FileName = "Antecedentes"; 
                grillaListado.MasterTableView.ExportToExcel();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }


Can you help me?







2 Answers, 1 is accepted

Sort by
0
Estudios-Electricos
Top achievements
Rank 1
answered on 16 Dec 2014, 07:26 PM
I found the solutions!....
0
Bill Wolff
Top achievements
Rank 1
answered on 14 Jan 2015, 09:13 PM
I am having a similar problem. What was your solution?
Tags
Grid
Asked by
Estudios-Electricos
Top achievements
Rank 1
Answers by
Estudios-Electricos
Top achievements
Rank 1
Bill Wolff
Top achievements
Rank 1
Share this question
or