Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hebinhopassamani

Bind no GridView

Recommended Posts

Pessoal,

 

para cada registro no meu gridview tem um botão para excluir aquele registro, porém alguns registros podem ser de sistema e não podem ser excluidos.

 

cada registro possui uma propriedade "Sistema" que é booleana indicando se o registro é de sistema ou não.

 

O problema é eu gostaria de dar o bind na propriedade visible do botão de excluir usando essa propriedade:

 

<asp:ImageButton ID="btnExcuir" runat="server" CommandName="Delete"

Visible='<%# Bind("Sistema") %>' />

 

mas ele é exatamente o contrário, ou seja se for verdadeiro o visible tinha que ser falso e vice versa.

 

como eu faco para inverter o bind? algo assim:

 

<asp:ImageButton ID="btnExcuir" runat="server" CommandName="Delete"

Visible='<%# Bind(Not "Sistema") %>' />

 

 

Mas dessa forma não funciona. como seria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

<asp:ImageButton ID="btnExcuir" runat="server" CommandName="Delete" Visible='<%# !Equals(Bind("Sistema")) %>' />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ivan, Obrigado por reponder tão rapido, mas não funcionou, não ta compilando.

 

porém eu achei uma solução aqui, veja:

 

<asp:ImageButton ID="btnExcuir" runat="server" CommandName="Delete"

Visible='<%#IIf(Boolean.Parse(Eval("Sistema").ToString()), "False", "True")%>' />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta:

<asp:ImageButton ID="btnExcuir" runat="server" CommandName="Delete" Visible='<%# !Equals(Eval("Sistema")) %>' />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há uma outra maneira de ocultar este botão.Você pode acessar o evento "OnRowDataBound" da gridview e ocultar por lá o controle:

 

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        int coluna = 0; coloque aqui a coluna na qual estará o objeto ImageButton
        
        ImageButton btnExcuir = (ImageButton)e.Row.Cells[coluna].FindControl("btnExcuir");
        btnExcuir.Visible = false;
    }
}

Creio que a manutenção desta forma fique mais fácil.

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Danilo, dessa sua forma tb funciona, porém consome muito mais recursos.

Pois tem que percorer linha por linha, e ainda realizar um findcontrol e fazer um cast.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.