none
Passar parâmetros utilizando uma datatable RRS feed

  • Pergunta

  • Galera bom dia!!!

    Estou enfrentando um super problema e estou desesperada.

    Estou tentando passar como parâmetro uma linha e coluna de um datatable temporário em um sessão e está me dando o seguinte Erro"

    An exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll but was not handled in user code

    Additional information: Não há linha na posição 1.

    "

    o meu código se encontra da forma abaixo:

    Em um primeiro momento carrego tabela da seguinte forma em uma session:

                        

    try
        {
            //Ana Paula
            WS_CentralAtendimento.Contrato_Assinante[] Contrato;
            Contrato = WS_CA.ListarContratoAssinate(((string[])Session["Login"])[0]); //(*)

            string[] stringPlano = new string[4];
            int cont = 0;
            string[] style = new string[2];
            style[0] = "";
            style[1] = "style='background-color: rgb(185, 223, 234);'";
            this.dataTable = CreateDataTable(); // chama o criador do cabecalho do dataTable
            DataRow row;

            foreach (WS_CentralAtendimento.Contrato_Assinante Contr in Contrato)
            {
                row = dataTable.NewRow();
                row["ST_ESTADO_ATUAL"] = Contr.ST_ESTADO_ATUAL.ToString();
                row["CD_SITUACAO_TEMP"] = Contr.CD_SITUACAO_TEMP.ToString();
                row["ST_ESTADO_ANTERIOR"] = Contr.ST_ESTADO_ANTERIOR.ToString();
                row["DT_VENDA"] = Contr.DT_VENDA.ToString();
                row["CD_CAMPANHA"] = Contr.CD_CAMPANHA.ToString();
                row["DS_CAMPANHA"] = (string.IsNullOrEmpty(Contr.DS_CAMPANHA) ? "" : Contr.DS_CAMPANHA);
                row["CD_PLANO"] = Contr.CD_PLANO.ToString();
                row["DS_PLANO"] = (String.IsNullOrEmpty(Contr.DS_PLANO) ? "" : Contr.DS_PLANO);
                row["CD_PRODUTO"] = Contr.CD_PRODUTO.ToString();
                row["NM_PRODUTO"] = (string.IsNullOrEmpty(Contr.DS_CAMPANHA) ? "" : Contr.DS_CAMPANHA);
                row["QTD_PRODUTO"] = Contr.QTD_PRODUTO.ToString();
                row["DT_INICIO"] = Contr.DT_INICIO.ToString();
                row["DT_TERMINO"] = Contr.DT_TERMINO.ToString();
                row["NU_SERIE"] = (string.IsNullOrEmpty(Contr.NU_SERIE_CTR) ? "" : Contr.NU_SERIE_CTR);
                row["NU_CTR"] = Contr.NU_CTR.ToString();
                row["NU_DV_CTR"] = Contr.NU_DV_CTR.ToString();
                row["NU_PARCELAS"] = Contr.NU_PARCELAS.ToString();
                row["DS_FORMA_PAG"] = (string.IsNullOrEmpty(Contr.DS_FORMA_PAG) ? "" : Contr.DS_FORMA_PAG);

                this.dataTable.Rows.Add(row);



                stringPlano = Contr.DS_PLANO.Split(' ');
                lblTable.Text = lblTable.Text + "<tr align='center' " + style[cont] + " class='TableAssinaturaLinha'>" +
                                "<td width='193'> " + Contr.NU_SERIE_CTR + Contr.NU_CTR + "-" + Contr.NU_DV_CTR + " - " + Contr.NM_PRODUTO + " </td>" +
                                "<td width='117'> " + "Em " + Contr.NU_PARCELAS + "X no " + Contr.DS_FORMA_PAG + " </td>" +
                                "<td width='46'> " + Contr.QTD_PRODUTO + " </td>" +
                                "<td width='90'> " + Convert.ToDateTime(Contr.DT_INICIO).Day.ToString().PadLeft(2, '0') + "/" + Convert.ToDateTime(Contr.DT_INICIO).Month.ToString().PadLeft(2, '0') + "/" + Convert.ToDateTime(Contr.DT_INICIO).Year.ToString() + " </td>" +
                                "<td width='90'> " + Convert.ToDateTime(Contr.DT_TERMINO).Day.ToString().PadLeft(2, '0') + "/" + Convert.ToDateTime(Contr.DT_TERMINO).Month.ToString().PadLeft(2, '0') + "/" + Convert.ToDateTime(Contr.DT_TERMINO).Year.ToString() + " </td>" +
                                "<td width='90'><img style='margin-right: 11px;cursor:pointer;' onmouseup=" + "javascript:document.getElementById('ctl00_ContentPlaceHolder1_Div_FundoLoading').className='FundoLoading';javascript:document.getElementById('ctl00_ContentPlaceHolder1_Div_imagemLoading').className='imagemLoading';" + " onclick=" + "javascript:window.location='Assinaturas.aspx?id=" + Contr.ST_ESTADO_ATUAL.ToString() + "'" + " src='Includes/Imagem/botao_alterar_table2.jpg' /></td></tr>"; //i.ToString()
                if (cont == 1)
                {
                    cont--;
                }
                else
                {
                    cont++;
                }
            }// end for
            Session["Assinaturas"] = this.dataTable;
        }
        catch
        {
            Session["Assinaturas"] = this.dataTable;
        }
    }

    Em um segundo momento ao clicar no Registro que seleciono na table executo as seguintes instruções, conforme abaixo:

                                          

    pnlGerarContrato.Visible = true;
    //Ana Paula  


    WS_CentralAtendimento.Pesquisa_Cliente Cliente = new WS_CentralAtendimento.Pesquisa_Cliente();

    pnlAlteraAss.Visible = true;
    pnlTableAss.Visible = false;

    lblTituloAss.Text = "Gerenciamento da Assinatura";

    Session["AuxPagamento"] = Request.QueryString["id"];

    Cliente = WS_CA.PesquisarCliente (((DataTable)Session["Assinaturas"]).Rows[int.Parse(Request.QueryString["id"])][13].ToString(), ((DataTable)Session["Assinaturas"]).Rows[int.Parse(Request.QueryString["id"])][14].ToString(), ((DataTable)Session["Assinaturas"]).Rows[int.Parse(Request.QueryString["id"])][15].ToString(), 0);

    O que estou fazendo de errado????

    terça-feira, 9 de junho de 2015 13:54

Todas as Respostas

  • Galera bom dia!!!

    Estou enfrentando um super problema e estou desesperada.

    Estou tentando passar como parâmetro uma linha e coluna de um datatable temporário em um sessão e está me dando o seguinte Erro"

    An exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll but was not handled in user code

    Additional information: Não há linha na posição 1.

    "

    o meu código se encontra da forma abaixo:

    Em um primeiro momento carrego tabela da seguinte forma em uma session:

                        

    try
        {
            //Ana Paula
            WS_CentralAtendimento.Contrato_Assinante[] Contrato;
            Contrato = WS_CA.ListarContratoAssinate(((string[])Session["Login"])[0]); //(*)

            string[] stringPlano = new string[4];
            int cont = 0;
            string[] style = new string[2];
            style[0] = "";
            style[1] = "style='background-color: rgb(185, 223, 234);'";
            this.dataTable = CreateDataTable(); // chama o criador do cabecalho do dataTable
            DataRow row;

            foreach (WS_CentralAtendimento.Contrato_Assinante Contr in Contrato)
            {
                row = dataTable.NewRow();
                row["ST_ESTADO_ATUAL"] = Contr.ST_ESTADO_ATUAL.ToString();
                row["CD_SITUACAO_TEMP"] = Contr.CD_SITUACAO_TEMP.ToString();
                row["ST_ESTADO_ANTERIOR"] = Contr.ST_ESTADO_ANTERIOR.ToString();
                row["DT_VENDA"] = Contr.DT_VENDA.ToString();
                row["CD_CAMPANHA"] = Contr.CD_CAMPANHA.ToString();
                row["DS_CAMPANHA"] = (string.IsNullOrEmpty(Contr.DS_CAMPANHA) ? "" : Contr.DS_CAMPANHA);
                row["CD_PLANO"] = Contr.CD_PLANO.ToString();
                row["DS_PLANO"] = (String.IsNullOrEmpty(Contr.DS_PLANO) ? "" : Contr.DS_PLANO);
                row["CD_PRODUTO"] = Contr.CD_PRODUTO.ToString();
                row["NM_PRODUTO"] = (string.IsNullOrEmpty(Contr.DS_CAMPANHA) ? "" : Contr.DS_CAMPANHA);
                row["QTD_PRODUTO"] = Contr.QTD_PRODUTO.ToString();
                row["DT_INICIO"] = Contr.DT_INICIO.ToString();
                row["DT_TERMINO"] = Contr.DT_TERMINO.ToString();
                row["NU_SERIE"] = (string.IsNullOrEmpty(Contr.NU_SERIE_CTR) ? "" : Contr.NU_SERIE_CTR);
                row["NU_CTR"] = Contr.NU_CTR.ToString();
                row["NU_DV_CTR"] = Contr.NU_DV_CTR.ToString();
                row["NU_PARCELAS"] = Contr.NU_PARCELAS.ToString();
                row["DS_FORMA_PAG"] = (string.IsNullOrEmpty(Contr.DS_FORMA_PAG) ? "" : Contr.DS_FORMA_PAG);

                this.dataTable.Rows.Add(row);



                stringPlano = Contr.DS_PLANO.Split(' ');
                lblTable.Text = lblTable.Text + "<tr align='center' " + style[cont] + " class='TableAssinaturaLinha'>" +
                                "<td width='193'> " + Contr.NU_SERIE_CTR + Contr.NU_CTR + "-" + Contr.NU_DV_CTR + " - " + Contr.NM_PRODUTO + " </td>" +
                                "<td width='117'> " + "Em " + Contr.NU_PARCELAS + "X no " + Contr.DS_FORMA_PAG + " </td>" +
                                "<td width='46'> " + Contr.QTD_PRODUTO + " </td>" +
                                "<td width='90'> " + Convert.ToDateTime(Contr.DT_INICIO).Day.ToString().PadLeft(2, '0') + "/" + Convert.ToDateTime(Contr.DT_INICIO).Month.ToString().PadLeft(2, '0') + "/" + Convert.ToDateTime(Contr.DT_INICIO).Year.ToString() + " </td>" +
                                "<td width='90'> " + Convert.ToDateTime(Contr.DT_TERMINO).Day.ToString().PadLeft(2, '0') + "/" + Convert.ToDateTime(Contr.DT_TERMINO).Month.ToString().PadLeft(2, '0') + "/" + Convert.ToDateTime(Contr.DT_TERMINO).Year.ToString() + " </td>" +
                                "<td width='90'><img style='margin-right: 11px;cursor:pointer;' onmouseup=" + "javascript:document.getElementById('ctl00_ContentPlaceHolder1_Div_FundoLoading').className='FundoLoading';javascript:document.getElementById('ctl00_ContentPlaceHolder1_Div_imagemLoading').className='imagemLoading';" + " onclick=" + "javascript:window.location='Assinaturas.aspx?id=" + Contr.ST_ESTADO_ATUAL.ToString() + "'" + " src='Includes/Imagem/botao_alterar_table2.jpg' /></td></tr>"; //i.ToString()
                if (cont == 1)
                {
                    cont--;
                }
                else
                {
                    cont++;
                }
            }// end for
            Session["Assinaturas"] = this.dataTable;
        }
        catch
        {
            Session["Assinaturas"] = this.dataTable;
        }
    }

    Em um segundo momento ao clicar no Registro que seleciono na table executo as seguintes instruções, conforme abaixo:

                                          

    pnlGerarContrato.Visible = true;
    //Ana Paula  


    WS_CentralAtendimento.Pesquisa_Cliente Cliente = new WS_CentralAtendimento.Pesquisa_Cliente();

    pnlAlteraAss.Visible = true;
    pnlTableAss.Visible = false;

    lblTituloAss.Text = "Gerenciamento da Assinatura";

    Session["AuxPagamento"] = Request.QueryString["id"];

    Cliente = WS_CA.PesquisarCliente (((DataTable)Session["Assinaturas"]).Rows[int.Parse(Request.QueryString["id"])][13].ToString(), ((DataTable)Session["Assinaturas"]).Rows[int.Parse(Request.QueryString["id"])][14].ToString(), ((DataTable)Session["Assinaturas"]).Rows[int.Parse(Request.QueryString["id"])][15].ToString(), 0);

    O Erro dá nesta última linha de código.

    O que estou fazendo de errado????


    terça-feira, 9 de junho de 2015 13:55
  • é provavel que seu DataTable esteja vazio.

    Já tentou no modo debug ver o conteúdo do Datatable?

    terça-feira, 9 de junho de 2015 14:04
  • Não está vazio não, existe uma linha
    terça-feira, 9 de junho de 2015 14:24
  • Veja se isso ajuda:

    http://stackoverflow.com/questions/27476944/indexoutofrangeexception-was-unhandled-by-user-code-in-a-for-loop

    O indice que você quer acessar provavelmente não exista.

    Tente acessar outro indice já que seu DT não está vazio.

    terça-feira, 9 de junho de 2015 14:41
  • Ana Paula Carvalho tudo bem?

    Posta o print onde ocorre o erro por gentileza

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Sugerido como Resposta Mr. GMSOFT domingo, 28 de junho de 2015 13:42
    terça-feira, 9 de junho de 2015 14:48