Fórum select em gridview preenchida através de classes. #11941

24/11/2009

0

Olá,   Tenho um gridview que é preenchida quando um botão é clicado. esse botão utiliza um método enviando como parametro a gridview e um controle para filtro. A consulta é feita e a grid é preenchida normalmente.   O problema é que agora eu preciso selecionar alguns itens da grid, mas dá erro quando eu adiciono uma coluna para seleção. como eu arrumo isso?   este é o HTML (ASP.NET) O gridviewsimularcamp é a grid a ser preenchida quando o botão botaosimularcamp for clicado.
quando o botão é clicado, ele chama o método simularcamp enviando como parametros a grid a ser preenchida e o dropdownlist que contem um filtro. Dentro do metodo é que a grid é preenchida. abaixo do html vou colocar o código do botão e logo abaixo o código do método.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="gerarcampanha.aspx.cs" Inherits="Admin_gerarcampanha" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <table id="TblWebPartes" class="style1" frame="border"> <tr> <td id="TblCellMenu" class="style5" valign="top" align="center" bgcolor="#275C76"> <img alt="" src="../Img/CEG.gif" style="width: 230px; height: 65px" /><img alt="" src="../Img/Titulo.gif" style="width: 530px; height: 65px" /></td> </tr> <tr> <td id="TblCellMenu0" class="style6" valign="top"> <asp:SiteMapDataSource ID="SiteMapDataSourceSCM" runat="server" /> <asp:Menu ID="Menu1" runat="server" BackColor="#B5C7DE" DynamicHorizontalOffset="1" Font-Names="Verdana" Font-Size="Small" ForeColor="#284E98" Orientation="Horizontal" StaticSubMenuIndent="5px" MaximumDynamicDisplayLevels="10" StaticDisplayLevels="2" DataSourceID="SiteMapDataSourceSCM" DynamicVerticalOffset="1" StaticEnableDefaultPopOutImage="False" Font-Bold="True" style="border-top-style: solid; border-top-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; padding: 1px"> <StaticSelectedStyle BackColor="#507CD1" /> <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" /> <DynamicHoverStyle BackColor="#284E98" ForeColor="White" /> <DynamicMenuStyle BackColor="#B5C7DE" /> <DynamicSelectedStyle BackColor="#507CD1" /> <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" /> <StaticHoverStyle BackColor="#284E98" ForeColor="White" /> </asp:Menu> </td> </tr> <tr> <td id="TblCellMenu1" class="style3" valign="top"> <p> Olá, <asp:LoginName ID="LoginName1" runat="server" /> ! <asp:LoginStatus ID="LoginStatus1" runat="server" LogoutPageUrl="~/login.aspx" /> </p> <p> GERAR CAMPANHA</p> <p> <asp:CheckBoxList ID="ChkBoxListGerarCamp" runat="server" style="height: 227px; width: 280px"> <asp:ListItem Value="IP">IP - Inspeções Periódicas</asp:ListItem> <asp:ListItem Value="VC">VC - Variação de Consumos</asp:ListItem> <asp:ListItem Value="CR">CR - Clientes Rescindidos</asp:ListItem> <asp:ListItem Value="FC">FC - Clientes com Fornecimento Cortado</asp:ListItem> <asp:ListItem Value="AL">AL - Clientes com Avisos de Leituristas</asp:ListItem> <asp:ListItem Value="AG">AG - Áreas Geográficas</asp:ListItem> <asp:ListItem Value="RA">RA - Ramo de Atividade</asp:ListItem> <asp:ListItem Value="CN">CN - Clientes Novos</asp:ListItem> <asp:ListItem Value="DS">DS - Denúncias e Solicitações</asp:ListItem> </asp:CheckBoxList> </p> <p> Filtros:</p> <p> <asp:DropDownList ID="DDLFiltroEstado" runat="server"> </asp:DropDownList> </p> <p> <asp:Button ID="BotaoSimularCamp" runat="server" onclick="BotaoSimularCamp_Click" Text="Simular" Width="60px" Height="26px" /> </p> <p> <asp:GridView ID="GridViewSimularCamp" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" style="height: 133px; width: 450px; " EnableSortingAndPagingCallbacks="True" PageSize="5" AllowSorting="True"> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <Columns> <asp:TemplateField HeaderText="Selecionar"></asp:TemplateField> </Columns> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#999999" /> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> </asp:GridView> </p> <p> <asp:Button ID="BotaoGerarCamp" runat="server" Text="Gerar" Width="60px" onclick="BotaoGerarCamp_Click" /> </p> <p> <asp:GridView ID="GridViewGerarCamp" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" style="height: 133px; width: 450px" AllowSorting="True"> <RowStyle BackColor="#EFF3FB" /> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#2461BF" /> <AlternatingRowStyle BackColor="White" /> </asp:GridView> </p> <p> &nbsp;</p> </td> </tr> <tr> <td id="TblCellRodape" align="center" class="style4"> <p> CEG, CEG RIO, GNSPS</p> </td> </tr> </table> </div> </form> </body> </html> codigo do botão:
protected void BotaoSimularCamp_Click(object sender, EventArgs e) { cliente.SelecaoSimula(GridViewSimularCamp, DDLFiltroEstado); } codigo do método que fica em outro arquivo, uma classe que acessa o banco e a tabela de clientes.
namespace ClasseCliente.Metodos { public class Cliente { private SqlConnection Conexao; private SqlCommand Comando; private String stringConexao = "Data Source=./;Initial Catalog=SCMCEG;Persist Security Info=True;User ID=DBAWeb;Password=12345"; private String sql; public void SelecaoSimula(GridView Grade, DropDownList estado) { Conexao = new SqlConnection(stringConexao); Conexao.Open(); sql = "SELECT numeroCliente AS NumeroCliente,razaoSocial AS RazaoSocial, endereco AS Endereço, bairro AS Bairro, municipio AS Município, estado AS Estado, statusCampanha AS Status FROM Clientes WHERE statusCampanha = 'Disponivel'"; if (estado.SelectedValue != "") { sql = sql + "AND estado = '" + estado.SelectedValue + "'"; } Comando = new SqlCommand(sql, Conexao); Grade.DataSource = Comando.ExecuteReader(); Grade.DataBind(); Conexao.Close(); } } } obrigado.
João Teixeira

João Teixeira

Responder

Posts

24/11/2009

Fabio Mans

Para selecionar uma linha do Grid você pode fazer o seguinte.   Adicione um ButtonField como abaixo.     <asp:ButtonField ButtonType="Image" ImageUrl="~/Images/plain_hover_lupa.gif" CommandName="Consultar" />   Coloque o valor que você precisa recuperar no DataKey - DataKeyNames="id_solicitacao" (por exemplo)   E para chamar o método programe no RowCommand    protected void SangriaGvw_RowCommand(object sender, GridViewCommandEventArgs e)
    {         if (e.CommandName == "Consultar")
        {
            int id = Convert.ToInt32(SangriaGvw.DataKeys[Convert.ToInt32(e.CommandArgument)][0]);
            CarregaSolicitacao(id);
                    }       }
  Espero ter ajudado.   Fabio
Responder

Gostei + 0

24/11/2009

João Teixeira

Olá, Onde eu coloco o botão, numa coluna template da grid, ou no webform mesmo? Se for numa coluna, assim que eu crio uma nova coluna, ao executar, tenho um erro.
Responder

Gostei + 0

24/11/2009

Fabio Mans

Veja no meu exemplo, está em negrito.    
            <asp:GridView ID="SangriaGvw" runat="server" AllowPaging="True"
                AutoGenerateColumns="False" DataKeyNames="id_solicitacao" OnPageIndexChanging="SangriaGvw_PageIndexChanging"
                OnRowDataBound="SangriaGvw_RowDataBound" OnSorting="SangriaGvw_Sorting"
                PageSize="20" onrowcommand="SangriaGvw_RowCommand"
                onrowcreated="SangriaGvw_RowCreated">
                <PagerSettings Position="TopAndBottom" />
                <Columns>
               
                     <asp:TemplateField>
                        <HeaderTemplate>
                            <asp:CheckBox ID="chkBxHeader" onclick="javascript:CheckUncheckCheckboxes(this);"
                                runat="server" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chkT" runat="server" />
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                    </asp:TemplateField>          
                   
                    <asp:ButtonField ButtonType="Image" ImageUrl="~/Images/plain_hover_lupa.gif" CommandName="Consultar" />
                     
                    <asp:BoundField DataField="data_sangria" HeaderText="Data sangria" SortExpression="data_sangria" />
                    <asp:BoundField DataField="data_solicitacao" HeaderText="Data da Solicita&#231;&#227;o" SortExpression="data_solicitacao" />
                    <asp:TemplateField HeaderText="Solicitante" SortExpression="nome_solicitante">
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("nome_solicitante") %>'></asp:Label>
                          
                            <asp:HiddenField ID="MatriculaHdf" Value='<%# Eval("mla_solicitante") %>' runat="server" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="tipopagamento" HeaderText="Tipo Pagamento" SortExpression="tipopagamento" />
                    <asp:BoundField DataField="Valor" DataFormatString="{0:c}" HeaderText="Valor" HtmlEncode="False" />
                    <asp:TemplateField HeaderText="Descri&#231;&#227;o das Despesas">
                        <ItemTemplate>
                           
                            <asp:Literal ID="Literal1" Text='<%# Bind("descricao_despesa") %>' runat="server"></asp:Literal>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="loja_sangria" HeaderText="Loja da Sangria" SortExpression="loja_sangria" />
                    <asp:BoundField DataField="area_aplicacao" HeaderText="&#193;rea de Aplica&#231;&#227;o" />
                    <asp:BoundField DataField="id_solicitacao" HeaderText="Nro. da Solicita&#231;&#227;o" SortExpression="id_solicitacao" />
                     <asp:ButtonField ButtonType="Image" CommandName="Cancelar" ImageUrl="~/Images/Delete.gif"
                                    Text="Cancelar sangria" HeaderText="Cancelar">
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:ButtonField>  
                   
                 
                </Columns>
            </asp:GridView>     Perceba que tenho dois, um eu abro um ModalPoup para fazer uma consulta e no último eu utilizo para excluir o registro.
Responder

Gostei + 0

24/11/2009

Fabio Mans

Veja no meu exemplo, está em negrito.    
            <asp:GridView ID="SangriaGvw" runat="server" AllowPaging="True"
                AutoGenerateColumns="False" DataKeyNames="id_solicitacao" OnPageIndexChanging="SangriaGvw_PageIndexChanging"
                OnRowDataBound="SangriaGvw_RowDataBound" OnSorting="SangriaGvw_Sorting"
                PageSize="20" onrowcommand="SangriaGvw_RowCommand"
                onrowcreated="SangriaGvw_RowCreated">
                <PagerSettings Position="TopAndBottom" />
                <Columns>
               
                     <asp:TemplateField>
                        <HeaderTemplate>
                            <asp:CheckBox ID="chkBxHeader" onclick="javascript:CheckUncheckCheckboxes(this);"
                                runat="server" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chkT" runat="server" />
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                    </asp:TemplateField>          
                   
                    <asp:ButtonField ButtonType="Image" ImageUrl="~/Images/plain_hover_lupa.gif" CommandName="Consultar" />
                     
                    <asp:BoundField DataField="data_sangria" HeaderText="Data sangria" SortExpression="data_sangria" />
                    <asp:BoundField DataField="data_solicitacao" HeaderText="Data da Solicita&#231;&#227;o" SortExpression="data_solicitacao" />
                    <asp:TemplateField HeaderText="Solicitante" SortExpression="nome_solicitante">
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("nome_solicitante") %>'></asp:Label>
                          
                            <asp:HiddenField ID="MatriculaHdf" Value='<%# Eval("mla_solicitante") %>' runat="server" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="tipopagamento" HeaderText="Tipo Pagamento" SortExpression="tipopagamento" />
                    <asp:BoundField DataField="Valor" DataFormatString="{0:c}" HeaderText="Valor" HtmlEncode="False" />
                    <asp:TemplateField HeaderText="Descri&#231;&#227;o das Despesas">
                        <ItemTemplate>
                           
                            <asp:Literal ID="Literal1" Text='<%# Bind("descricao_despesa") %>' runat="server"></asp:Literal>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="loja_sangria" HeaderText="Loja da Sangria" SortExpression="loja_sangria" />
                    <asp:BoundField DataField="area_aplicacao" HeaderText="&#193;rea de Aplica&#231;&#227;o" />
                    <asp:BoundField DataField="id_solicitacao" HeaderText="Nro. da Solicita&#231;&#227;o" SortExpression="id_solicitacao" />
                     <asp:ButtonField ButtonType="Image" CommandName="Cancelar" ImageUrl="~/Images/Delete.gif"
                                    Text="Cancelar sangria" HeaderText="Cancelar">
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:ButtonField>  
                   
                 
                </Columns>
            </asp:GridView>     Perceba que tenho dois, um eu abro um ModalPoup para fazer uma consulta e no último eu utilizo para excluir o registro.     Fabio
Responder

Gostei + 0

25/11/2009

João Teixeira

Olá,   Eu adicionei o botão, mas dá o seguinte erro:   Mensagem de Erro do Analisador: O tipo 'System.Web.UI.WebControls.GridView' não tem uma propriedade pública denominada 'ButtonField'.   o código da grid no aspx ficou assim: <p> <asp:GridView ID="GridViewSimularCamp" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" style="height: 133px; width: 450px; " EnableSortingAndPagingCallbacks="True" PageSize="5" AllowSorting="True" AutoGenerateEditButton="True" onrowediting="GridViewSimularCamp_RowEditing"> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#999999" /> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <asp:ButtonField ButtonType="Link" CommandName="Selecionar" /> <asp:ButtonField ButtonType="Link" CommandName="Cancelar" Text="Cancelar sangria" HeaderText="Cancelar"> <ItemStyle HorizontalAlign="Center" /> </asp:ButtonField> </asp:GridView> </p>    
Responder

Gostei + 0

25/11/2009

Fabio Mans

Faz pelo Designer, está errado como fez.     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:ButtonField Text="Button" /> <asp:ButtonField Text="Button" /> </Columns> </asp:GridView   Fabio
Responder

Gostei + 0

25/11/2009

João Teixeira

Bem, agora o grid é exibido e quando eu clico em num botao que eu criei para preencher a grid, ela é preenchida com duas linhas e duas colunas, em todas as celulas existem o link Button. Se eu escolho um filtro e tento preencher, o filtro funciona e só aparece uma linha, também com os links Button.   Por que não estão aparecendo as informações?
Responder

Gostei + 0

25/11/2009

Fabio Mans

Você monta o seu grid como tinha feito antes, só acrescente os buttons como te mostrei pelo Designer, não copie o último exemplo, só mandei para mostrar como é feito.   Fabio
Responder

Gostei + 0

25/11/2009

João Teixeira

Eu fiz isso, a minha grid exibe as informações e o link ao lado, mas o link nao faz nada. Onde eu defino que o link deve selecionar os itens?
Responder

Gostei + 0

25/11/2009

Fabio Mans

Quando você clica no link ele dispara o RowCommand, veja no início do chamado os exemplos que te passei. Crie o envento       protected void SangriaGvw_RowCommand(object sender, GridViewCommandEventArgs e)
    {         if (e.CommandName == "Consultar")
        {
            int id = Convert.ToInt32(SangriaGvw.DataKeys[Convert.ToInt32(e.CommandArgument)][0]);
            CarregaSolicitacao(id);
                    }       }
 
Responder

Gostei + 0

25/11/2009

João Teixeira

Olá Fabio,   Eu consegui arrumar de outro jeito. De qualquer forma, obrigado pela atenção.
Responder

Gostei + 0

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

Aceitar