none
Excluir linha só do GridView e atualizar GridView ?? RRS feed

  • Pergunta

  • Bom dia galera, tenho uma tarefa simples, mas não estou conseguindo desenvolver  do jeito que preciso.

    Seguinte: tenho o Grid 1, onde seleciono algumas linhas aleatórias, ou seleciono todas as llinhas e clico em um botão para gerar o 2º Grid através de um DataTable, este segundo Grid não tem DataSource. Vai ser criado sempre de maneira dinâmica e sempre através das linhas selecionadas no 1º Grid. To precisando de um método que apague a linha do 2º Grid e atualize o 2º Grid, mas sem perdes os dados que estão nele, se eu der um DataBind, meu 2º Grid vai ser gerado de novo e todas as linhas somem. Como posso apagar a linha e atualizar o 2º Grid sem perder seus dados, sem que eu precise fazer um DataBind??

    Abraço e bom FDS pra todos...


    Marcos Paulo - Analista de Sistemas

    sexta-feira, 13 de setembro de 2013 11:34

Respostas

  • Para quem precisar... consegui resolver desta maneira...

    adicione o DataKeyNames no Grid view e o evento OnRowDeleting

    <asp:GridView ID="grdDocSelecionado" runat="server" AutoGenerateColumns="False" Width="100%" vPageSize="20"  OnRowDeleting="OnRowDeleting" DataKeyNames="DOC_ID" ToolTip="Selecione os documentos recebidos">

    Depois no evento OnRowDeleting utilizei o código a seguir:

    protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e)
            {
    // crio um datatable utilizando a Session do 2° Grid
                    DataTable tbl = (DataTable)Session["dtSession"];
    //depois removo a linha desejada pelo index dela
                    tbl.Rows.RemoveAt(e.RowIndex);
    // Salvo esta nova Sessão no novo datatable
                    Session["dtSession"] = tbl;
    // utilizo a session como datasource 
                    grdDocSelecionado.DataSource = (DataTable)Session["dtSession"];
    // depois mando o bind
                    grdDocSelecionado.DataBind();
                
            }

    no Page_load eu crio a Session utillizando o ViewState

    protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { numDTL = txtNum_DTLEC.Text; numDoc = txtNumDoc.Text; this.atualizaGrid(numDTL, numDoc); dt = new DataTable(); CreateDataTable(); } else { dt = (DataTable)ViewState["DataTable"];

    //criação da Session utilizando o ViewState Session["dtSession"] = ViewState["DataTable"]; } ViewState["DataTable"] = dt; }


    eu utilizei um botão delete que já tem no Grid, achei mais fácil doq criar manualmente.

    qlq dúvida estou a disposição.

    Abraço


    Marcos Paulo - Analista de Sistemas

    • Marcado como Resposta Marcos Paulo P.M segunda-feira, 16 de setembro de 2013 13:08
    segunda-feira, 16 de setembro de 2013 13:07