zenfra 0 Denunciar post Postado Dezembro 30, 2006 Bom dia pessoal,Gostarai de saber se alguém pode me explicar o funcionamento de um datagrid com checkbox. Vou explicar o meu código e o que eu quero fazer.Criei um data crid e em uma das colunas inseri um checkbox através de um templatecolumn, ao selecionar o checkbox em uma determinada linha de registro existente no datagrid carregado com os dados que selecionei na base de dados ele deveria pegar o valor existente em uma célula dessa linha de registro e exibir em um textbox na pagina. O código abaixo é o código que estou usando para fazer esse teste:coloquei um datagrid no form chamada grid1 e um textbox chamado texto a partir dai comecei a efetuar as configuraçõesImports System.DataImports System.Data.SqlClientPublic Class form1 Inherits System.Web.UI.Page **** Criei uma classe para o checkbox Private Class DDLTemplate Implements ITemplate Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn Dim ck As New CheckBox ck.ID = "check" ck.AutoPostBack = True container.Controls.Add(dd1) End Sub End Class Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load *** Ao iniciar a pagina **** BindGrid() AddHandler Me.grid1.SelectedIndexChanged, AddressOf Me.clica End Sub ***** Sub para carregamento do Datagrid ***** Private Sub BindGrid() Dim Conn As New SqlConnection("Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=portal;Data Source=WAGNER") Dim SqlQuery As String = "Select distinct * from tb_portal_empresa" Dim Comand As New SqlCommand Dim da As New SqlDataAdapter Dim dt As New DataTable Comand.Connection = Conn Comand.CommandType = CommandType.Text Comand.CommandText = SqlQuery da.SelectCommand = Comand da.Fill(dt) da.Dispose() Comand.Dispose() Conn.Dispose() colunas() grid1.GridLines = GridLines.Vertical grid1.BorderStyle = BorderStyle.Solid grid1.BorderWidth = Unit.Pixel(1) grid1.BorderColor = Color.FromKnownColor(KnownColor.Menu).FromName("EFEFEF") grid1.HeaderStyle.BackColor = Color.FromKnownColor(KnownColor.Menu).FromName("336699") grid1.DataSource = dt grid1.DataKeyField = "cd_empresa" grid1.DataBind() End Sub Private Sub colunas() Dim cell1 As New TemplateColumn cell1.ItemStyle.Width = Unit.Pixel(30) cell1.ItemStyle.HorizontalAlign = HorizontalAlign.Center cell1.HeaderTemplate = New DDLTemplate cell1.HeaderStyle.HorizontalAlign = HorizontalAlign.Center cell1.ItemTemplate = New DDLTemplate cell1.HeaderText = "Status" Me.grid1.Columns.Add(cell1) Dim cell2 As New TemplateColumn cell2.ItemTemplate = New DDL2template Me.grid1.Columns.Add(cell2) End Sub ***** Aqui eu tentei criar uma Sub para exibir o valor contindo na celula 3 do meu datagrid quando selecionesse o checkbox , mas não funcionou ******* Private Sub clica(ByVal s As Object, ByVal e As EventArgs) Me.Texto.Text = "Item selecionado " & Me.grid1.SelectedItem.Cells(3).Text End SubEnd Class Compartilhar este post Link para o post Compartilhar em outros sites
Juliano.net 2 Denunciar post Postado Janeiro 2, 2007 zenfra, no evento ItemDataBound, utilize a função FindControl para localizar o controle da Checkbox.Ex:Dim chkItem as CheckBoxchkItem = DirectCast(e.Item.FindControl("SuaCheckBox_no_DataGrid"),CheckBox)E depois verifique se a propriedade Checked de cada checkbox é igual a True ou False, daí é só seguir com a lógica para acessar o restante das colunas. Compartilhar este post Link para o post Compartilhar em outros sites
zenfra 0 Denunciar post Postado Janeiro 2, 2007 Putzz Juliano,Aina não entendi muito bem...Olá Só.... vou fazer uma código mais curto aqui... você pode me explciar melhor?**** Crio a Classe para a TemplateColumn da gridPrivate Class Check implements iTemplate dim Checkb as New CheckBox Checkb.Id="Ck" Me.grid.Columns.add(Checkb)End class**** Crio a sub para gerar as colunas que eu queroPrivare sub GerarColunas() Dim Coluna1 as new TemplateColumn Coluna1.ItemTemplate = New Check Me.grid1.Columns.add(Coluna1) Dim Coluna2 as new BoundColumn Coluna2.DataField = "Cd_Caso" Coluna2.Headertext = "Nº do Caso" Me.grid1.Columns.add(Coluna2)end sub*** aqui eu vou configurar e Popular a grid1Private Sub PopulaGrid()Dim Conn As New SqlConnection("Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=portal;Data Source=WAGNER")Dim SqlQuery As String = "Select distinct * from tb_portal_empresa"Dim Comand As New SqlCommandDim da As New SqlDataAdapterDim dt As New DataTableComand.Connection = ConnComand.CommandType = CommandType.TextComand.CommandText = SqlQueryda.SelectCommand = Comandda.Fill(dt)da.Dispose()Comand.Dispose()Conn.Dispose()Call GerarColunasgrid1.GridLines = GridLines.Verticalgrid1.BorderStyle = BorderStyle.Solidgrid1.BorderWidth = Unit.Pixel(1)grid1.BorderColor = Color.FromKnownColor(KnownColor.Menu).FromName("EFEFEF")grid1.HeaderStyle.BackColor = Color.FromKnownColor(KnownColor.Menu).FromName("336699")grid1.DataSource = dtgrid1.DataKeyField = "cd_empresa"grid1.DataBind() End SubEntão Juliano.....A partir dessas sub eu vou ter uma grid com a primeira coluna com o Checkbox e a segunda coluna com um valor existente na minha base de dados Cd_Caso....Por exemplo, como eu faria para exibir em um textbox o valor da coluna Cd_Caso para o Checkbox que eu selecionei na grid?Eu vi que você me pasou essa linha como diga:Ex:Dim chkItem as CheckBoxchkItem = DirectCast(e.Item.FindControl("SuaCheckBox_no_DataGrid"),CheckBox)Mas, não entendi muito bem!....como eu referencio minha checkbox no grid?da mesma forma como eu referencio qualquer coluna ?tenho que fazer um foreach?Obrigado pela atenção e me desculpe ser chato rs.... é f*** aprender sozinho cara.... nossa Compartilhar este post Link para o post Compartilhar em outros sites