Fórum Trabalhar com edição de GridView #377858

19/05/2010

0

Oi!   Gostaria de saber de vocês, se existe a melhor maneira de se trabalhar com gridview em projetos quando se está em modo de edição. Até o momento, sei que existe:   - Trabalhar com edição no próprio gridview; - Obter os dados da linha do gridview que deseja alterar, coloca-los nos campos da página e por meio de um botão (Salvar, por exemplo) realizar alteração ou inclusão dos campos; - Abri uma janela de popup para editar os campos e salvar as alterações.   Nos projetos que trabalhei já me deparei com estas três formas (provavelmente existam mais), e gostaria de saber se existe uma mais adequada para eu adotar como padrão nos projetos da empresa.   Fico no aguardo!   Obrigado
Carlos Nogueira

Carlos Nogueira

Responder

Posts

19/05/2010

Luiz Maia

Ola Carlos,     Realmente existem várias formas de edição de itens. Logicamente, depende muito da massa de dados e do tamanho do projeto. Imagina você alterar diretamente na grid uma tabela que possui muitos campos, incluindo campos do tipo Text. Não rola né?   Particularmente eu prefiro fazer a parte de Edição fora da GridView, assim o usuário tem um ganho enorme em navegabilidade e usabilidade. Desta forma, vc consegue usar Validators, usar RadioButtons, combobox (restringue os domínios) e etc... O usuário agradece!!!   Sempre faço o seguinte: Crio somente um webform e dentro dele tenho Paineis, assim não preciso criar varios arquivos. Segue um exemplo:     <%@ Page Title="" Language="C#" MasterPageFile="~/Master/MasterPage.master" AutoEventWireup="true" CodeFile="Obra.aspx.cs" Inherits="Administracao_Obra" %> <asp:Content ID="cpConteudo" ContentPlaceHolderID="cphBoby" runat="Server"> <asp:Panel ID="pnBusca" runat="server"> Palavra-chave: <asp:TextBox ID="tbPalavraChave" runat="server" Width="300px"></asp:TextBox>&nbsp; <asp:Button ID="btPesquisar" runat="server" Text="Pesquisar" CssClass="botao" Width="70px" OnClick="btPesquisar_Click" /> <asp:Button ID="btNovo" runat="server" OnClick="btNovo_Click" Text="Novo" CssClass="botao" Width="70px" /> </asp:Panel> <asp:Panel ID="pnListagem" runat="server"> <br /> <asp:GridView ID="gvRegistros" runat="server" AutoGenerateColumns="False" OnRowDataBound="gvRegistros_RowDataBound" OnPageIndexChanging="gvRegistros_PageIndexChanging"> <Columns> <asp:BoundField HeaderStyle-Width="20%" DataField="cod_obra" HeaderText="Código Obra" /> <asp:BoundField HeaderStyle-Width="40%" DataField="nom_obra" HeaderText="Nome Obra" /> <asp:BoundField HeaderStyle-Width="10%" DataField="ind_possui_rua" HeaderText="Tem Rua" /> <asp:BoundField HeaderStyle-Width="15%" DataField="vlr_distancia_minima_1" HeaderText="Distância Min. 1" /> <asp:BoundField HeaderStyle-Width="15%" DataField="vlr_distancia_minima_2" HeaderText="Distância Min. 2" /> <asp:TemplateField HeaderStyle-HorizontalAlign="Center" HeaderStyle-Width="40px" HeaderText="Excluir" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:ImageButton ID="ibExcluir" runat="server" ImageUrl="~/Imagens/btn_excluir.gif" OnClientClick="javascript:return ConfirmaExclusaoParentes('esta Obra', 'Esta ação excluirá todas as Obras Secundárias!');" OnCommand="Excluir" /> <asp:Label ID="lbExcluir" runat="server" Text="-" Visible="false"></asp:Label> </ItemTemplate> <HeaderStyle HorizontalAlign="Center" /> <ItemStyle HorizontalAlign="Center" /> </asp:TemplateField> </Columns> </asp:GridView> <asp:Label ID="lbQtRegistros" runat="server" CssClass="informacoes"></asp:Label> </asp:Panel> <asp:Panel ID="pnEditar" runat="server" Visible="False" Width="100%" HorizontalAlign="Left"> <fieldset> <legend> <asp:Label ID="lbObra" runat="server"></asp:Label></legend> <br /> <p> <b>Código:<asp:RequiredFieldValidator ID="rfvCodigoObra" runat="server" ControlToValidate="tbCodigoObra" ErrorMessage="Código da Obra.">*</asp:RequiredFieldValidator> </b> <br /> <asp:TextBox ID="tbCodigoObra" runat="server" MaxLength="10" Width="100px"></asp:TextBox> </p> <p> <b>Nome da Obra:<asp:RequiredFieldValidator ID="rfvNomeObra" runat="server" ControlToValidate="tbNomeObra" ErrorMessage="Nome da Obra.">*</asp:RequiredFieldValidator> </b> <br /> <asp:TextBox ID="tbNomeObra" runat="server" MaxLength="40" Width="350px"></asp:TextBox> </p> <p> <b>Distância Min 1:<asp:RequiredFieldValidator ID="rfvDistMin1" runat="server" ControlToValidate="tbDistMin1" ErrorMessage="Distância Min. 1">*</asp:RequiredFieldValidator> </b> <br /> <asp:TextBox ID="tbDistMin1" runat="server" MaxLength="3" Width="100px"></asp:TextBox> </p> <p> <b>Distância Min 2:<asp:RequiredFieldValidator ID="rfvDistMin2" runat="server" ControlToValidate="tbDistMin2" ErrorMessage="Distância Min. 2">*</asp:RequiredFieldValidator> </b> <br /> <asp:TextBox ID="tbDistMin2" runat="server" MaxLength="3" Width="100px"></asp:TextBox> </p> <p> <b> <asp:CheckBox ID="cbTemRua" runat="server" CssClass="sem-estilo" Text="Tem rua?" /></b> </p> </fieldset> <br /> <asp:Button ID="btSalvar" runat="server" CssClass="botao" OnClick="btSalvar_Click" Text="Salvar" Width="100px" /> <asp:Button ID="btVoltar" CssClass="botao" Width="100px" runat="server" Text="Cancelar" CausesValidation="False" OnClick="btVoltar_Click" /> <asp:Label ID="lbMensagem" CssClass="erro" runat="server"></asp:Label> </asp:Panel> <br /> </asp:Content>   Abraços Luiz Maia
Responder

Gostei + 0

19/05/2010

Carlos Nogueira

Olá Luiz,   Ah, valeu mesmo pela dica, eu vou seguir se conselho, também estava pensando que a edição fora do grid seria muito melhor, principalmente no que diz respeito a muitos dados em uma mesma linha para exibir para edição, como você mesmo havia dito.   Ah, gostei da dica dos panels, eu irei fazer o mesmo aqui, acredito que desta forma fique bom para eu pessoal seguir um padrão de página (ou pelo menos espero, rsrs)..   Muito obrigado! Se desejar, pode finalizar este chamado!   Abraços,   Até mais
Responder

Gostei + 0

20/05/2010

Luiz Maia

Blz Carlos, precisando é so falar... estamos a disposição. Abraços   Att Luiz Maia
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar