• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

teckV

[VB.NET 1.1] Criar Colunas Personalizadas numa DataGrid

1 mensagem neste tópico

se quiserem listar os conteudos de uma tabela numa grid e quiserem que a grid tenha mais duas colunas com funcionalidades extra, tipo, eliminar registo e ver detalhe

código HTML para a DataGrid

<asp:datagrid id="datGridDumps" style="Z-INDEX: 102; LEFT: 33px; POSITION: absolute; TOP: 135px"
			runat="server" Font-Names="Verdana" Width="853px" OnDeleteCommand="datGridDumps_DeleteCommand"
	DataKeyField="dumpID" Height="25px" BorderColor="Black" BorderStyle="Solid">
  <Columns>
<asp:ButtonColumn Text="Eliminar" CommandName="Delete"></asp:ButtonColumn>
<asp:HyperLinkColumn Text="Relatorio" Target="_blank" DataNavigateUrlField="dumpID" DataNavigateUrlFormatString=" ../server?/AD/ad_prop&dumpID={0}">
</asp:HyperLinkColumn>
			</Columns>
		</asp:datagrid>

aqui saliento esta propriedade: "DataKeyField" que vai indicar qual o campo na tabela que server de indice ao registo, neste caso o dumpID

DataKeyField="dumpID"

e é aqui que se definem os eventos associados a essa coluna... elas são links... quando se clica nesse link é disparado o evento associado

OnDeleteCommand="datGridDumps_DeleteCommand"

neste caso quando clicarem na coluna associada ao delete, este evento é lançado

a parte referente às colunas.. no caso do delete é a propriedade "CommandName" que vai indicar que é a coluna para delete e associa ao evento delete

<Columns>
<asp:ButtonColumn Text="Eliminar" CommandName="Delete"></asp:ButtonColumn>
<asp:HyperLinkColumn Text="Relatorio" Target="_blank" DataNavigateUrlField="dumpID" DataNavigateUrlFormatString=".. /server?/AD/ad_prop&dumpID={0}">
</asp:HyperLinkColumn>
</Columns>

assim... quando clicarem no link que têm o texto "Eliminar" (defenido na propriedade Text="Eliminar") é executado o código neste evento

codigo no evento... no evento precisamos saber qual o registo selecionado... para tal usamos o tal DataKeyField="dumpID" que é o campo na tabela com o indice do registo... para receber o valor do registo selecionado na grid usa-se:

intDumpID = datGridDumps.DataKeys(CInt(e.Item.ItemIndex))

Public Sub datGridDumps_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles datGridDumps.DeleteCommand

        Try

            Dim strCon = ConfigurationSettings.AppSettings("conString")
            Dim MyCon = New SqlConnection(strCon)
            MyCon.Open()

            Dim intDumpID As Int32
            intDumpID = datGridDumps.DataKeys(CInt(e.Item.ItemIndex))

            Dim MyCommand As SqlCommand = New SqlCommand
            MyCommand.Connection = MyCon

            MyCommand.CommandText = "DELETE FROM ad_accounts WHERE(dumpID = " & intDumpID & ")"
            Call MyCommand.ExecuteNonQuery()

            MyCommand.CommandText = "DELETE FROM ad_dumps WHERE (dumpID = " & intDumpID & ")"
            Call MyCommand.ExecuteNonQuery()

            boundControls()

            MyCommand = Nothing
            MyCon.close()

        Catch Ex As Exception
            deb.WriteLine("erro = " & Ex.Message)
            lblMSG.Text = "Ocorreu um erro na introdução dos dados!!  Verifique os dados a introduzir"
        End Try

    End Sub

explorem melhor... apenas quero dar uma ideia das potencialidades...

teckV

house of horus

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora