none
Pegar ID no GridView e popular um Datatable RRS feed

  • Pergunta

  • Olá Pessoal!

    O meu problema é: Tenho um Gridview com checkbox, as linhas que estiverem com o checkbox selecionado eu devo pegar o ID e guardar em um DataTable.

    Uma vez com os IDs no DataTable eu vou enviar um e-mail para cada linha. (cada registro da linha possui um endereço de e-mail)

    Bom, nesse momento eu já estou conseguindo pegar o ID do check box Selecionado, mas eu estou preenchendo uma string e não um DataTable, acredito que dessa maneira eu não conseguirei contar para parar de enviar os e-mails quando chegar ao final.

    Segue o código que estou usando:

    Gridview (aspx)

    <asp:GridView Width="100%" BorderStyle="None" BorderWidth="0" id="gvResultado" runat="server" AllowSorting="true" DataKeyNames="IDUsuario" AutoGenerateColumns="false" OnRowCommand="gvResultado_RowCommand" SelectedRowStyle-ForeColor="#FF0066" PageSize="50" CssClass="grid" HeaderStyle-CssClass="header" AlternatingRowStyle-CssClass="alternativa" RowStyle-CssClass="normal">
                                                        <RowStyle Height="30px"/>
                                                        <Columns>
                                                            <asp:TemplateField HeaderText="Enviar para" ItemStyle-HorizontalAlign="Center" >
                                                                <ItemTemplate>
                                                                    <input type="checkbox" runat="server" id="checkSelecionado" value='<%# Eval("IDUsuario")%>' />
                                                                </ItemTemplate>
                                                            </asp:TemplateField>
                                                            <asp:BoundField DataField="IDUsuario" HeaderText="ID do usuário" Visible="false"/>
                                                            <asp:BoundField DataField="Nome" HeaderText="Nome"/>
                                                            <asp:BoundField DataField="DDDTelefone" HeaderText="Código DDD" ItemStyle-HorizontalAlign="Center" />
                                                            <asp:BoundField DataField="Telefone" HeaderText="Tel preferencial" ItemStyle-HorizontalAlign="Center" />
                                                            <asp:BoundField DataField="DDDCelular" HeaderText="Código DDD" ItemStyle-HorizontalAlign="Center" />
                                                            <asp:BoundField DataField="Celular" HeaderText="Tel secundário" ItemStyle-HorizontalAlign="Center" />
                                                            <asp:BoundField DataField="Radio" HeaderText="Rádio ID" ItemStyle-HorizontalAlign="Center" />
                                                            <asp:ButtonField HeaderText="Mais informações" CommandName="Informacoes" Text="Detalhes" ItemStyle-HorizontalAlign="Center" />
                                                        </Columns>
                                                    </asp:GridView>


    Agora o código aspx.vb

            Dim strchecados As String = String.Empty
            For Each key As String In Request.Form.Keys
                If key.EndsWith("checkSelecionado") Then
                    If CType(Page.FindControl(key), System.Web.UI.HtmlControls.HtmlInputCheckBox).Checked Then
                        strchecados = (strchecados _
                                    + (Request.Form(key) + ", "))
                    End If
                End If
            Next
            lblteste.Text = strchecados

    Pessoal, eu gostaria de ao invés de popular uma string eu gostaria de popular um DataTable. Algém sabe como fazer?

    Obrigado e um abraço para todos!

    t+


    Se foi útil, favor marcar para que outros também possam utilizar.

    terça-feira, 14 de fevereiro de 2012 01:13

Respostas

  • Olá pessoal,

    Achei essa solução que não precisa de DataTable, ela carrega os selecionados e executa um comando enquanto tiver seleconados.

    Vou testar hoje a noite e respondo aqui, abração!

    Sub Excluir()
            Dim i As Integer
            For i = 0 To gvProducts.Rows.Count - 1
                Dim dgItem As GridViewRow = gvProducts.Rows(i)
                Dim lblid As Label = CType(dgItem.FindControl("lblid"), Label)
                Dim cb As CheckBox = CType(dgItem.FindControl("chk1"), CheckBox)
                If cb.Checked Then
                    DeletaRegistro(CInt(lblid.Text))
                End If
            Next i
            exibeGrid()
    End Sub


    Se foi útil, favor marcar para que outros também possam utilizar.

    • Marcado como Resposta Harley Araujo quarta-feira, 15 de fevereiro de 2012 10:58
    terça-feira, 14 de fevereiro de 2012 18:35

Todas as Respostas

  • veja um ex como criar e popular

    http://www.lazyasscoder.com/Article.aspx?id=66&title=How+To%3A+Create+and+populate+a+DataTable+manually


    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    terça-feira, 14 de fevereiro de 2012 11:22
    Moderador
  • Olá pessoal,

    Achei essa solução que não precisa de DataTable, ela carrega os selecionados e executa um comando enquanto tiver seleconados.

    Vou testar hoje a noite e respondo aqui, abração!

    Sub Excluir()
            Dim i As Integer
            For i = 0 To gvProducts.Rows.Count - 1
                Dim dgItem As GridViewRow = gvProducts.Rows(i)
                Dim lblid As Label = CType(dgItem.FindControl("lblid"), Label)
                Dim cb As CheckBox = CType(dgItem.FindControl("chk1"), CheckBox)
                If cb.Checked Then
                    DeletaRegistro(CInt(lblid.Text))
                End If
            Next i
            exibeGrid()
    End Sub


    Se foi útil, favor marcar para que outros também possam utilizar.

    • Marcado como Resposta Harley Araujo quarta-feira, 15 de fevereiro de 2012 10:58
    terça-feira, 14 de fevereiro de 2012 18:35