Array
(
)

como fazer uma consulta em outro form sem perder os parametr

Ibanes
   - 16 jul 2008

Bom dia pessoal,

estou com um problema que está me quebrando, tenho uma página de ´Pedidos´, sendo que nesta mesma página tenho vários ´itens´ sendo inseridos em uma gridview dinamicamente desconectada, até aí ta tudo certo, o grande problema é quando o usuário não lembra o código do item e quer fazer uma consulta, então clica no botão consulta e é direcionado para a página de ´consulta de itens´ e nesta página faz a consulta e seleciona o item desejado, o problema é que na volta para a página de ´Pedidos´ ele perde todos os dados que tinham antes de fazer a consulta, teria algum modo sendo com ajax ou sem de fazer esta consulta sem perder os dados atuais????

Grato,

Ibanes!

Ricardo Silva
   - 16 jul 2008

axo que armazenando os pedidos em uma variavel de sessão... de certo...

sabe fazer isso??

na duvida soh posta

Ibanes
   - 16 jul 2008

sei sim, mas não posso utiliza-las, tava pensando em algo como usar o server.transfer, mas ainda não consegui fazer ao certo...
queria pelo transferir um listbox inteiro ou um grid mas não sei como fazer...

será que seria possível gravar um xml e quando voltar para o form inicial recuperar os dados???

o que fazer quando necessita buscar itens em outro form e ir adicionando no atual???

Ricardo Silva
   - 17 jul 2008

salvar um XLM?? onde??
provavelmente numa variavel de sessão...

tipo assim em C#
#Código

//Cria uma variavel de sessão do tipo DataSet
    public DataSet getDataSetCar() {
        if(Session["Car"] == null) {
            //Cria uma tabela dinamica em tempo de execução
            DataSet ds = new DataSet();
            DataColumn colCod = new DataColumn("PRD_CODIGO", Type.GetType("System.Int32"), "");
            DataTable dt = new DataTable("Car");
            //Adiciona colunas na tabela
            dt.Columns.Add(colCod);
            dt.Columns.Add("PRD_NOME", Type.GetType("System.String"), "");
            dt.Columns.Add("PRD_QTD", Type.GetType("System.Int32"), "");
            dt.Columns.Add("PRD_VENDA", Type.GetType("System.Double"), "");
            dt.Columns.Add("SUBTOTAL", Type.GetType("System.Double"), "PRD_VENDA*PRD_QTD");
            dt.Columns.Add("TOTAL", Type.GetType("System.Double"), "Sum(SUBTOTAL)");
            dt.Columns.Add("ESTOQUE", Type.GetType("System.Int32"), "");
            //Key Field (chave da tabela)
            DataColumn[] keys = new DataColumn[1];
            keys[0] = colCod;
            dt.PrimaryKey = keys;
            ds.Tables.Add(dt);
            Session["Car"] = ds;
            return ds;
        } else {
            return Session["Car"] as DataSet;
        }
    }
    // Adiciona um Item ou altera a qantidade do Item 
    private void add(int quantidade) {
        produto.Codigo = (int)request.QueryString["item"];
        DataTable itemSelecionado = produto.consultar(produto.Codigo.ToString()).Tables[0];
        //verifica se o tem selecionado já foi adicionado ao grid
        DataTable dt = getDataSetCar().Tables[0];
        DataRow row = dt.Rows.Find(isInt(txtproduto.Text));

        // Adiciona a linha row no Grid
        if(row == null) {
            row = dt.NewRow();
            row["PRD_CODIGO"] = isInt(txtproduto.Text);
            row["PRD_NOME"] = itemSelecionado.Rows[0].ItemArray[1].ToString();
            row["PRD_QTD"] = quantidade;
            row["PRD_VENDA"] = double.Parse(txtPreco.Text);// itemSelecionado.Rows[0].ItemArray[2].ToString();
            row["ESTOQUE"] = itemSelecionado.Rows[0].ItemArray[3].ToString();
            dt.Rows.Add(row);

        } else {
            int qtd = (int)row["PRD_QTD"];
            quantidade += qtd;
            row["PRD_QTD"] = quantidade;
        }
    }
    private void Remove(int aId) {
        DataSet ds = getDataSetCar();
        DataRow row = ds.Tables[0].Rows.Find(aId);
        if(row != null) {
            ds.Tables[0].Rows.Remove(row);
            ds.AcceptChanges();
            gridProduto.DataSource = getDataSetCar();
            gridProduto.DataBind();
        }
    }


no serverTransfer vc passa o código do item e a quantidade.
utilize a função Add(); para adicionar o item no carrinho de compra.

ah... tem umas funçoes e variaveis ja criadas q naum foi postadas... espero q compreenda.
na duvida soh posta

Ibanes
   - 21 jul 2008

Rica, primeiramente mto obrigado pelas informações, não sabia que dava pra passar dataSet por variável de sessão...

O problema é que aqui na empresa onde eu trabalho eles não deixam utilizar variáveis de sessão pois tem um certo padrão e por isso pensei em criar uma função para gravar um XML temporário e ler quando precisar, assim posso ir adicionando quando quiser e o mesmo para deletar e assim que fosse gravado o pedido eu poderia apagar o arquivo, será que isso fica mto pesado?? pensei também em usar os tabsContaner do AJAX, assim poderia subdividir em tabs assim seria uma para inserir os itens, outra para soncultar, outra para cadastrar um item.....
Outra alternativa também seria utilizar divs em hidden onde quando fosse consultar deixava a tela inteira em hidden e setava visible true somente para a consulta e ambas na mesma posição sempre...

ideias :)

[]´s

Ricardo Silva
   - 21 jul 2008

bom se sua empresa tem um padrão e uma restrição é não usar variaveis de sessão... por motivos próprio...

da suas ideia as que eu gostei mais foi a de usar o TabPanel do AjaxControlToolKit mesmo. ja brinquei um pouco com eles mas nada de esxtravagante... mas creio que poderia resolver seu problema. é ou não (rsrsr).