Fórum Trabalhanco com Classes #3900
23/03/2009
Amigos,
Estou utilizando ASP.NET e trabalhando com Classes
Tenho por exemplo a Classe Abaixo:
Imports System.Collections.Generic
Imports System.Text
Imports System.Data.SqlClient
Imports System.Data
Public class clsREGIAO
Private _CODIGO_REG As Integer
Public Property CODIGO_REG() As Integer
Get
Return _CODIGO_REG
End Get
Set(Byval value as Integer)
_CODIGO_REG = value
End Set
End Property
Private _NOME_REG As String
Public Property NOME_REG() As String
Get
Return _NOME_REG
End Get
Set(Byval value as String)
_NOME_REG = value
End Set
End Property
Public Function SelectREGIAO() As DataSet
Dim clsBanco as New clsBanco
Dim strsql as String
strsql = "SELECT * FROM TBL_REGIAO"
Return clsbanco.RetornaDataSet(strsql.tostring)
End Function
Public Sub DeleteREGIAO(ByVal IntCodigo As Integer)
Dim clsBanco as New clsBanco
Dim strsql as String
strsql = "DELETE FROM TBL_REGIAO"
strsql = "WHERE CODIGO_REG = "& IntCodigo
clsbanco.ExecutaComando(strsql.tostring)
End Sub
Public Sub UpdateREGIAO(Byval IntCodigo as Integer)
Dim clsBanco As new clsBanco
Dim strsql as String
strsql = "UPDATE TBL_REGIAO SET "
strsql = strsql & "NOME_REG= '" & _NOME_REG &"'"
strsql = strsql & " WHERE CODIGO_REG = " & intCodigo
clsbanco.ExecutaComando(strsql.tostring)
End Sub
Public Sub InsertREGIAO()
Dim clsBanco As new clsBanco
Dim strsql as String
strsql = "INSERT INTO TBL_REGIAO("
strsql = strsql & "NOME_REG"
strsql = strsql & ")VALUES("
strsql = strsql & "'"&_NOME_REG & "'"
strsql = strsql & ")"
clsbanco.ExecutaComando(strsql.tostring)
End Sub
End Class
Na pagina Default.aspx eu acrescentei uma GRIDVIEW
Criei um OBJECTDataSource Que faz referencia a Esta Classe
Consigo Fazer a Opção de Select Sem problemas,
MINHA PERGUNTA É,
Como Faço Para Definir no GRIDVIEW que os procedimentos UPDATE, INSERT e DELETE da Classe sejam Chamados?
Grato
Posts
Fernando,
Para que um DataSource seja lincado num GridView e as propriedades de Update, delete sejam habilitadas dinamicamente, vc precisa criar um DataSet Tipado.
Mas como vc já fez suas consultas de CRUD, vc deve chamar os metodos a mão mesmo. Siga os passos abaixo:
Crie uma coluna usando TemplateField no GridView e jogo o ID do registro no CommandArgument;
Crie um metodo de Edição que vc passara este Id como parametro;
Crie outra coluna identica a de Editar para Exclusão, e faça um metodo de exclusão tb.
Use o RowDataBound para pegar o Id e jogar no CommandArgument.
De uma olhada abaixo:
Agora que você já tem os dados populados na sua GridView, você precisa ter uma coluna com um botão de edição, segue abaixo uma sugestão, repare nas duas ultimas colunas da Grid que possuem imagebuttons, uma para edição e outr para exclusão.
<asp:GridView ID="gvDados" runat="server" AutoGenerateColumns="False" DataKeyNames="codfiscal" OnRowDataBound="gvDados_RowDataBound" AllowPaging="True" OnPageIndexChanging="gvDados_PageIndexChanging">
<Columns>
<asp:BoundField DataField="numGtd" HeaderText="Número" />
<asp:BoundField DataField="nomDocum" HeaderText="Tipo" />
<asp:TemplateField HeaderText="Alterar" SortExpression="codGtd">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" Width="1px" />
<ItemTemplate>
<asp:ImageButton ID="ibAlterar" runat="server" CausesValidation="False" ImageUrl="~/Images/btn_alterar.gif"
OnCommand="Alterar" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Excluir" ShowHeader="False">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" Width="1px" />
<ItemTemplate>
<asp:ImageButton ID="ibExcluir" runat="server" CausesValidation="False" ImageUrl="~/Images/btn_excluir.gif"
OnClientClick="javascript:return ConfirmaExclusao('esta GTD');" OnCommand="Excluir" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle Font-Bold="True" ForeColor="White" />
</asp:GridView>
No evento RowDataBound do GridView, vc coloca os commadsArguments para os itens que deseja editar:
protected void gvDados_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string codItem = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "codGtd"));
ImageButton ibAlterar = e.Row.FindControl("ibAlterar") as ImageButton;
ImageButton ibExcluir = e.Row.FindControl("ibExcluir") as ImageButton;
ibExcluir.CommandArgument = codItem;
ibAlterar.CommandArgument = codItem;}
}
E aqui você chama o método que precisa:
protected void Alterar(object sender, CommandEventArgs e)
{
int codItem = Convert.ToInt32("0" + e.CommandArgument);
EditarItem(codItem);
}
Note que o metodo acima é invocado no GridView na coluna Alterar.
Agora é só usar um Panel, por exemplo, e mandar as informações que vc deve recuperar na base para os controles dentro dele, já que vc já tem o ID do registro que deseja alterar. Pode usar a própria parte de cadastro.
Caso não entenda algum passo, me avise.
Aguardo seu retorno.
Abraços
Att
Luiz Maia
Luiz, Obrigado pela ajuda,
Vamos lá
Queria que explica-se esta Indicação abaixo:
Crie uma coluna usando TemplateField no GridView (até aqui tudo bem) e jogo o ID do registro no CommandArgument;(??????????????????????? desculpa, não entendi aqui. CommandArgument)
Crie um metodo de Edição que vc passara este Id como parametro; ( Ja tenho este pronto)
Crie outra coluna identica a de Editar para Exclusão, e faça um metodo de exclusão tb. (fica a dúvida acima)
Use o RowDataBound para pegar o Id e jogar no CommandArgument. (dúvida acima).
Quando entrou na parte da ROWDataBound ( mesmo no C# eu entendi...kkkk)
Queria entender melhor esta faze, pode comentar por favor?
'-------------------------------------------------------------------------------------------------
ImageButton ibAlterar = e.Row.FindControl("ibAlterar") as ImageButton;
ImageButton ibExcluir = e.Row.FindControl("ibExcluir") as ImageButton;
ibExcluir.CommandArgument = codItem;
ibAlterar.CommandArgument = codItem;}
'------------------------------------------------------------------
Fico no Aguardo,..
Grato
Fernando,
O DataRowBound é um recurso que varre seus registros do GridView, para implementa-lo, vá até as propriedades do GridView, no Properties, clique no raio Events e vc vera esta evento la, dê dois cliques nele que seu evento estara criado.
ImageButton ibAlterar = e.Row.FindControl("ibAlterar") as ImageButton;
ImageButton ibExcluir = e.Row.FindControl("ibExcluir") as ImageButton;
ibExcluir.CommandArgument = codItem;
ibAlterar.CommandArgument = codItem;}
Considerações do trecho acima:
Foram criados dois ImageButton, usamod o findcontrol para "acha-los" dentro do GridView;
O CommandArgument é um atributo destes controles onde podemos armazenar valores, no seu caso o ID de cada linha.
string codItem = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "codTeste"));
Esta linha é usada dentro do DataRowBound para receber os valores de sua coleção para cada registro.
Por exemplo, vc tem na sua base 3 registros:
codTeste dscNome
1 Luiz
2 Agnelo
3 Maia
Quando vc usa o DataRow, ele varre os registros e vai setando-os para cada linha no GridView.
Repare que o codigo acima, recupera o codTeste, para recuperar o nome, usa-se:
string codItem = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "dscNome"));
E quando vc joga este valor no commandArgument, cada linha do GridView assume o valor do registro da vez.
Caso não tenha endentido algo, posso fazer uma pequena aplicação para vc ver como funciona.
Abraços
Att
Luiz Maia
Ola Luiz,
Agradeço o Retorno
se puder criar uma pequena aplicação será muito util,
grato
Blz, Fernando.
Vou desenvolver uma e te mando hj a noite.
Enquanto isto, seria altamente recomendavel vc ler este artigo:
https://www.devmedia.com.br/articles/viewcomp.asp?comp=9281
Caso não possua acesso, providenciamos para vc!
Abraços
Att
Luiz Maia
Luiz,
Fico no Aguardo e Agradeço.
A noite então olho o projetinho,
Obrigado pelo envio do artigo, Vou estudá-lo agora,
Abraço
Segue a aplicação de exemplo Fernando.
Tem todos os metodos de um CRUD no arquivo Descricao.aspx dentro da pasta Adminstracao.
http://video.devmedia.com.br/naoexclusivo/LuizMaia/Consultoria/fernando01.zip
Qualquer coisa que não entender, me avise.
Abraços
Att
Luiz Maia
Obrigado Luiz,
Duvida Escalrecida,
Muito Obrigado, Ja consegui Fazer o processo.