Caros, estou com um problema que inicialmente pareceu ser simples, mas
se tornou uma manada de elefantes brancos. Tenho uma tela de
Administração de usuários onde listo em um grid view todos os
usuários. O datasouce desse grid view é uma lista da classe Usuario.
Nessa classe usuário tenho um campo Administrador do tipo int, que
pode ser 0 ou 1, indicando true ou false. No banco de dados, SQL
Server, esse campo é bit. Nesse grid view tem um campo checkbox onde
gostaria que o checked estivesse true quando o camp Administrador for
1 e false quando o mesmo campo for 0. Criei um evendo rowdatabound e
tentei os seguintes códigos, mas nenhum funcionou:
CheckBox chk =
(CheckBox)grdUsuarios.FindControl("chkAdministrador");
chk.Checked =
Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "Administrador")) ==
1;
CheckBox chk =
(CheckBox)grdUsuarios.FindControl("chkAdministrador");
if (Convert.ToInt32(DataBinder.Eval(e.Row.DataItem,
"Administrador")) == 1)
{
chk.Checked = true;
}
else
{
chk.Checked = false;
}
O erro é "Referência de objeto não definida para uma instância de um
objeto.". Pelo que entendo, não posso acessar o checkbox dessa
maneira. Caso seja isso, como fazer? Caso não seja isso, o que está
errado? Existe alguma forma mais simples de fazer isso? Já tentei com
checkboxfield e ele diz que não pode converter do tipo bool para
string.
Muito obrigado.
Abraços
--
Celso Rivera
rivera...@gmail.com
--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
WebSite: www.dotnetbr.com
E-mail do Grupo: dotn...@googlegroups.com
==============================
Bruno, fiquei em dúvida se colocava o seu exemplo no rowdatabound ou
na página aspx, coloquei na página aspx e deu o seguinte erro:
Server Error in '/' Application.
--------------------------------------------------------------------------------
Parser Error
Description: An error occurred during the parsing of a resource
required to service this request. Please review the following specific
parse error details and modify your source file appropriately.
Parser Error Message: The server tag is not well formed.
Source Error:
Line 31: <asp:TemplateField HeaderText="Administrador">
Line 32: <ItemTemplate>
Line 33: <asp:CheckBox
ID="chkAdministrador" runat="server" Checked="<%#
DataBinder.Eval(Container.DataItem, "Administrador")==1?"true":"false"
%>"/>
Line 34: </ItemTemplate>
Line 35: <ItemStyle HorizontalAlign="Center" />
Source File: /View/UsuariosAdministracao.aspx Line: 33
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319;
ASP.NET Version:4.0.30319.237
Rogério e Saulo, coloquei o seguinte código no rowdatabaund:
CheckBox chk =
(CheckBox)e.Row.Cells[1].FindControl("chkAdministrador");
chk.Checked = true;
coloquei um break point na primeira linha e o chk está como null após
a execução. Não devia conter um objeto? Já re-chequei o nome do campo
"chkAdministrador" e está correto. O campo é o segundo do grid, em um
array base 0 seria o campo 1, correto?
Muito obrigado
--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
WebSite: www.dotnetbr.com
E-mail do Grupo: dotn...@googlegroups.com
==============================
Acho que o problema agora está no acesso ao campo Administrador. Esse
campo faz parte da classe usuário, que está dentro de uma lista, ou
seja, o datasource do gridview é uma lista de tipo Usuario. Pelo que
entendi ele não está deixando acessar o campo diretamente, então como
fazer?
Muito obrigado.
--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
WebSite: www.dotnetbr.com
E-mail do Grupo: dotn...@googlegroups.com
==============================
Checked='<%#DataBinder.Eval(Container.DataItem, "Administrador")=="0" %>'
Foi só colocar o "0" e passou a funcionar. Não entedi por que, já que
o campo administrador é int, mas enfim, funcionou. Muito obrigado a
todos.
--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
WebSite: www.dotnetbr.com
E-mail do Grupo: dotn...@googlegroups.com
==============================
Luis Garavello - Desenvolvimento Financeiro
lgara...@team.br.inter.net
Inter.net Brasil - http://www.br.inter.net
Av. Dr Cardoso de Melo, 1.460 cj31 - Vila Olímpia
São Paulo, SP - 04548-005
Tel: (11) 3523-3311 | Fax: (11) 3523-3334
Inter.net - Soluções de Internet para você e para sua empresa
Curta nossa página no Facebook Siga a @Inter_Digital no Twitter
-----Mensagem original-----
De: dotn...@googlegroups.com [mailto:dotn...@googlegroups.com] Em nome
de Celso Rivera
Enviada em: sexta-feira, 21 de outubro de 2011 17:08
Para: dotn...@googlegroups.com
Assunto: Re: [.Net - BR] Gridview com checkbox
Abraços
--
Celso Rivera
rivera...@gmail.com
--
Abraços
Em 24 de outubro de 2011 09:52, Paulo César de França Viana pcfviana
<pcfv...@gmail.com> escreveu: