Pergunta

Eu quero fazer algo assim com um GridView:

<asp:CommandField ShowSelectButton="True" Visible='<%# return Eval("SC_TABLE") %>' />

Mas que não funciona, chegando com erro:

expressões DataBinding são apenas suportado em objetos que têm uma DataBinding evento. System.Web.UI.WebControls.CommandField não tem um evento DataBinding.

Existe uma maneira eu posso definir a visibilidade da página aspx? PS:. SC_TABLE existe desde a fonte de dados, por isso nada de errado daquela parte

Foi útil?

Solução

Você pode fazer isso com um TemplateField em vez ...

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton runat="server" ID=SelectButton CommandName="SELECT" Visible='<%# Eval("SC_TABLE") %>' Text="Select" />
    </ItemTemplate>
</asp:TemplateField>

Outras dicas

Eu encontrei a resposta no final do este post :

Basicamente, você precisa para capturar o evento RowCreated na DataGrid

OnRowCreated = "GridView1_RowCreated"

Em seguida, no uso página aspx.cs o seguinte código para esconder controles:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowIndex == 1)
    {
        e.Row.Cells[0].Controls.Clear();
    } 
}

Ele funciona se você tiver um CommandField na primeira coluna.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top