none
Gridview valor de coluna invisivel RRS feed

  • Pergunta

  • Boa noite,
     
    Para terminar o aperfeicoamento da página que estou implementando só falto um permonenorzinho que não estou conseguindo solucionar, já pesquisei no google e no forum e não encontrei solução.
     
    Tenho uma página com uma tabcontainer e vários tabpanel's, dentro de um tabpanel tenho uma gridview, com o datakeyfield defido e 4 colunas, as 3ª são boundfield e a última uma templatefield uma vez que tem umm linkbutton. A 1ª coluna está escondida uma vez que é a coiluna DatakeyField
     
    No evento rowcommand estou a recuperar os valores das colunas 2 e 3 e passo para textbox's para evitar ler novamente da BD. O problema está na 1ª coluna, uma vez que está escondida não é possivel recuperar o valor.
     
    A solução que tinha pensado era em tempo de execução, mostrar a coluna, resgatar o valor e depois esconder de seguida, acontece que não me está a ser possivel mostar o valor.
    Para despiste optei por mostrar e não esconder mas ai só ao segundo clique no comando da gridview é que resgata.
    Vou postar o código:
    HTML da coluna de comando
               <asp:TemplateField HeaderText="Editar">
                <ItemTemplate>
                 <asp:LinkButton ID="cmdEditar"
                 CommandArgument='<%# Container.DataItemIndex %>'
                 CommandName="Editar" runat="server">
                  <img border="0" src="images/edit.gif" alt="Editar" />
                 </asp:LinkButton>
    
                </ItemTemplate>
                <ItemStyle HorizontalAlign="Center" Width="40px" />
               </asp:TemplateField>
    
     
    C#
      protected void gvProjectos_RowCommand(object sender, GridViewCommandEventArgs e)
      {
       if (e.CommandName == "Editar")
       { 
        //Encontral o Botao Adiconar do painel projectos
        Button btPanel = (Button)tbpProjectos.FindControl("btAdicionar");
    
        //Esconde botão
        btPanel.Visible = false;
    
        //mostra painel de edição
        pnEdicao.Visible = true;
    
        //mostra a 1ª coluna da gridview
        gvProjectos.Columns[0].Visible = true; 
    
        //encontra o indice de linha clicada
        int index = Convert.ToInt32(e.CommandArgument);
        
        //define o indice da linha clicada
        GridViewRow row = gvProjectos.Rows[index];
        
        //Atribui o ID da Linha na label
        lbIDProjecto.Text = row.Cells[0].Text;
    
     
    
        //Atribui o valor da 2º coluna
        txProjecto.Text = row.Cells[1].Text;
    
        //Atribui o valor da 3º coluna
        if (row.Cells[2].Text == "Activo")
        {
         ddlEstado.SelectedValue = "1";
        }
        else { 
         ddlEstado.SelectedValue = "0";
        }
    
        //esconde a 1ª coluna
        gvProjectos.Columns[0].Visible = false;
     
       }
    
      }
    

     Como  poderei resolver sem mexer no que já está?

    Será por estar dentro de um tabcontainer?

     

    Obrigado!


    quarta-feira, 27 de abril de 2011 00:41

Respostas

Todas as Respostas