Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rob.coutinho

Interrogação no GridView

Recommended Posts

Salve galera, seguinte:Fiz um GridView e um SQLDataSource td de maneira visual no VWD. Até aí, tudo bem. Consigo exibir os dados no grid, coloquei o link de editar e deletar. Só que acontece o seguinte. Quando estou configurando o DataSource, e clico na opção Advanced para que o VWD gere o código de Update, Insert e Delete, a tag é gerada dessa maneira:DeleteCommand="DELETE FROM [TABELA] WHERE [CODIGO] = ?" ouUpdateCommand="UPDATE [TABELA] SET [Campo1] = ?, [Campo2] = ?"...Aí está o problema. E não entendo esse bendito sinal de interrogação! Onde ele está o código não deveria ter gerado @CODIGO ou @Campo1 ou @Campo2 ?Porque não consigo gerar de maneira automática esses comandos? Lembrando que minha instrução select foi testada tanto com * (asterisco) para selecionar todos os campos como também tentei selecionando todas as colunas uma a uma. Mas tanto na instrução de Delete, como na de Insert e também na de Update todos os parâmetros saem com essa interrogação.Como posso resolver isso? Alguém já passo por algo semelhante ou sabe como solucionar esse problema?Agradeço desde já toda e qq ajuda!Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

creio q ele use a "?" para que você coloque o nome dos parametros, já q ele n pode adivinhar qual o nome q você vai usar.Então basta você digitar os nomes q quer usar (@campo1, @campo2...), pois são nomes de variaveis e n de campos de tabelas. n se esqueça de definir os parametros criados nos seus locais apropriados.Se for insert, coloque dentro de insert parameter, se for update, dentro de update, e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Macal, aí que está o problema. Eu imaginei isso também, e já tinha feito oq você sugeriu. Mas o resultado é a seguinte msg de erro:Must declare the variable '@CODIGO'Detalhe, no próprio SQLDataSource é gerado uma linha como essa:<DeleteParameters><asp:Parameter Name="CODIGO" Type="Int32" /></DeleteParameters>Não sei oq pode tá acontecendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para melhor elucidar o problema, olhem só o código gerado pelo VWD.

 

<form runat="server">

<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="True" AutoGenerateDeleteButton="True" AllowPaging="True" AllowSorting="True"

BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"

CellPadding="3" CellSpacing="2" DataSourceID="SqlDataSource1" Width="100%" PageSize="15" AutoGenerateColumns="False">

<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />

<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />

<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />

<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />

<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />

<Columns>

<asp:BoundField DataField="clienteCode" HeaderText="clienteCode" InsertVisible="False"

ReadOnly="True" SortExpression="clienteCode" />

<asp:BoundField DataField="nome" HeaderText="nome" SortExpression="nome" />

<asp:BoundField DataField="senha" HeaderText="senha" SortExpression="senha" />

<asp:BoundField DataField="cpf" HeaderText="cpf" SortExpression="cpf" />

<asp:BoundField DataField="rg" HeaderText="rg" SortExpression="rg" />

<asp:BoundField DataField="tel" HeaderText="tel" SortExpression="tel" />

<asp:BoundField DataField="cel" HeaderText="cel" SortExpression="cel" />

<asp:BoundField DataField="fax" HeaderText="fax" SortExpression="fax" />

<asp:BoundField DataField="email" HeaderText="email" SortExpression="email" />

<asp:BoundField DataField="endereco" HeaderText="endereco" SortExpression="endereco" />

<asp:BoundField DataField="numero" HeaderText="numero" SortExpression="numero" />

<asp:BoundField DataField="bairro" HeaderText="bairro" SortExpression="bairro" />

<asp:BoundField DataField="uf" HeaderText="uf" SortExpression="uf" />

<asp:BoundField DataField="ref" HeaderText="ref" SortExpression="ref" />

<asp:BoundField DataField="cidade" HeaderText="cidade" SortExpression="cidade" />

<asp:BoundField DataField="complemento" HeaderText="complemento" SortExpression="complemento" />

<asp:BoundField DataField="cep" HeaderText="cep" SortExpression="cep" />

<asp:BoundField DataField="adminCallcenterCode" HeaderText="adminCallcenterCode"

SortExpression="adminCallcenterCode" />

<asp:BoundField DataField="adminFinancCode" HeaderText="adminFinancCode" SortExpression="adminFinancCode" />

<asp:BoundField DataField="receb_novid" HeaderText="receb_novid" SortExpression="receb_novid" />

<asp:BoundField DataField="email2" HeaderText="email2" SortExpression="email2" />

<asp:BoundField DataField="dt_nascimento" HeaderText="dt_nascimento" SortExpression="dt_nascimento" />

<asp:BoundField DataField="sexo" HeaderText="sexo" SortExpression="sexo" />

<asp:BoundField DataField="estadoCivil" HeaderText="estadoCivil" SortExpression="estadoCivil" />

<asp:BoundField DataField="orgaoExpRg" HeaderText="orgaoExpRg" SortExpression="orgaoExpRg" />

<asp:BoundField DataField="dt_emissaoRg" HeaderText="dt_emissaoRg" SortExpression="dt_emissaoRg" />

<asp:BoundField DataField="maior60" HeaderText="maior60" SortExpression="maior60" />

<asp:BoundField DataField="apinss" HeaderText="apinss" SortExpression="apinss" />

</Columns>

</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

DeleteCommand="DELETE FROM [CLIENTES] WHERE [clienteCode] = @clienteCode"

InsertCommand="INSERT INTO [CLIENTES] ([clienteCode], [nome], [senha], [cpf], [rg], [tel], [cel], [fax], , [endereco], [numero], [bairro], [uf], [ref], [cidade], [complemento], [cep], [adminCallcenterCode], [adminFinancCode], [receb_novid], [email2], [dt_nascimento], [sexo], [estadoCivil], [orgaoExpRg], [dt_emissaoRg], [maior60], [apinss]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"

ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"

SelectCommand="SELECT [clienteCode], [nome], [senha], [cpf], [rg], [tel], [cel], [fax], , [endereco], [numero], [bairro], [uf], [ref], [cidade], [complemento], [cep], [adminCallcenterCode], [adminFinancCode], [receb_novid], [email2], [dt_nascimento], [sexo], [estadoCivil], [orgaoExpRg], [dt_emissaoRg], [maior60], [apinss] FROM [CLIENTES]"

UpdateCommand="UPDATE [CLIENTES] SET [nome] = ?, [senha] = ?, [cpf] = ?, [rg] = ?, [tel] = ?, [cel] = ?, [fax] = ?, = ?, [endereco] = ?, [numero] = ?, [bairro] = ?, [uf] = ?, [ref] = ?, [cidade] = ?, [complemento] = ?, [cep] = ?, [adminCallcenterCode] = ?, [adminFinancCode] = ?, [receb_novid] = ?, [email2] = ?, [dt_nascimento] = ?, [sexo] = ?, [estadoCivil] = ?, [orgaoExpRg] = ?, [dt_emissaoRg] = ?, [maior60] = ?, [apinss] = ? WHERE [clienteCode] = ?">

<DeleteParameters>

<asp:Parameter Name="clienteCode" Type="Int32" />

</DeleteParameters>

<UpdateParameters>

<asp:Parameter Name="nome" Type="String" />

<asp:Parameter Name="senha" Type="String" />

<asp:Parameter Name="cpf" Type="String" />

<asp:Parameter Name="rg" Type="String" />

<asp:Parameter Name="tel" Type="String" />

<asp:Parameter Name="cel" Type="String" />

<asp:Parameter Name="fax" Type="String" />

<asp:Parameter Name="email" Type="String" />

<asp:Parameter Name="endereco" Type="String" />

<asp:Parameter Name="numero" Type="String" />

<asp:Parameter Name="bairro" Type="String" />

<asp:Parameter Name="uf" Type="String" />

<asp:Parameter Name="ref" Type="String" />

<asp:Parameter Name="cidade" Type="String" />

<asp:Parameter Name="complemento" Type="String" />

<asp:Parameter Name="cep" Type="String" />

<asp:Parameter Name="adminCallcenterCode" Type="Int32" />

<asp:Parameter Name="adminFinancCode" Type="Int32" />

<asp:Parameter Name="receb_novid" Type="Int16" />

<asp:Parameter Name="email2" Type="String" />

<asp:Parameter Name="dt_nascimento" Type="DateTime" />

<asp:Parameter Name="sexo" Type="String" />

<asp:Parameter Name="estadoCivil" Type="String" />

<asp:Parameter Name="orgaoExpRg" Type="String" />

<asp:Parameter Name="dt_emissaoRg" Type="DateTime" />

<asp:Parameter Name="maior60" Type="Byte" />

<asp:Parameter Name="apinss" Type="Byte" />

<asp:Parameter Name="clienteCode" Type="Int32" />

</UpdateParameters>

<InsertParameters>

<asp:Parameter Name="clienteCode" Type="Int32" />

<asp:Parameter Name="nome" Type="String" />

<asp:Parameter Name="senha" Type="String" />

<asp:Parameter Name="cpf" Type="String" />

<asp:Parameter Name="rg" Type="String" />

<asp:Parameter Name="tel" Type="String" />

<asp:Parameter Name="cel" Type="String" />

<asp:Parameter Name="fax" Type="String" />

<asp:Parameter Name="email" Type="String" />

<asp:Parameter Name="endereco" Type="String" />

<asp:Parameter Name="numero" Type="String" />

<asp:Parameter Name="bairro" Type="String" />

<asp:Parameter Name="uf" Type="String" />

<asp:Parameter Name="ref" Type="String" />

<asp:Parameter Name="cidade" Type="String" />

<asp:Parameter Name="complemento" Type="String" />

<asp:Parameter Name="cep" Type="String" />

<asp:Parameter Name="adminCallcenterCode" Type="Int32" />

<asp:Parameter Name="adminFinancCode" Type="Int32" />

<asp:Parameter Name="receb_novid" Type="Int16" />

<asp:Parameter Name="email2" Type="String" />

<asp:Parameter Name="dt_nascimento" Type="DateTime" />

<asp:Parameter Name="sexo" Type="String" />

<asp:Parameter Name="estadoCivil" Type="String" />

<asp:Parameter Name="orgaoExpRg" Type="String" />

<asp:Parameter Name="dt_emissaoRg" Type="DateTime" />

<asp:Parameter Name="maior60" Type="Byte" />

<asp:Parameter Name="apinss" Type="Byte" />

</InsertParameters>

</asp:SqlDataSource>

 

</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

substitua os "?" pelos nomes da variaveis. por exemplo, o insert ficaria assim:InsertCommand="INSERT INTO [CLIENTES] ([clienteCode], [nome], [senha], [cpf], [rg], [tel], ...) VALUES (@clienteCode, @nome, @senha, @cpf, @rg, @tel, ...)"é só ir trocando pelos nomes q estão no insert. Isso deve funcionar (ou pelo menos deveria), pq tenho um codigo q segue o msm raciocinio.mais uma coisa: recomendo q você converta os campos para template. dessa forma você podera editar melhor cada campo do seu gridview/details view, verificando o databind dos componentes (textbox, dropdownlist...). geralmente eu uso details view para editar/inserir. o grid uso somente para mostrar dados basicos e boto uma coluna com o link "Selecionar" nele para direcionar o usuario para o detailsview em outra pagina com as informações individuais e opções de edição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Macal, mas infelizmente, dá erro sim. O erro que já informei neste mesmo tópico. Mesmo colocando as tags uma a uma o erro persiste. Vou apelar para o DetailView mesmo mas, o ideal era saber o porque de estar tendo esse problema. Pois, ele era ideal no meu caso e nas circustancias que estou desenvolvendo o que preciso.Mas depois vejo isto com mais calma.De qualquer forma, valeu pela atenção.Robson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mais um detalhe galera. Não consigo gerar nada de maneira visual. Nem no VWD n em no VS. Simplesmente, eu não consigo gerar tudo de maneira rápida e prática pois ambos os programas insistem em colocar a bendita interrogação. Arrasto GridView para a aplicação, arrasto o SQLDataSource, configuro o SQLDataSource, em seguida configuro o GridView para poder editar atualizar o registro, e não vai. Nâo funciona, mesmo! Nâo sei oq pode estar acontecendo. Realmente, acho que vou ter que voltar pro bom e velho ASP pois, se tento fazer via código, tb tenho erro de declaração de variável. Relutei pra aderir ao ASP.NET e acho que não estou dando sorte, ou estou esquecendo de algum detalhe no processo de criação do grid ou detailview ou, é mta incompetência minha rsrs Abraço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho. axei mto facil fazer tudo com o vwd.você baixou os "lessons"?quando eu comecei no asp.net, as video-aulas q eles disponibilizam para download foram mto uteis. ensinam o basico para criar uma apliacação.Essa "?" é sempre inserida e nunca me foi problema. Sempre substitui pelos parametros @item1, @item2... etc.Mto estranho isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Macal. Meu problema foi solucionado. Coincidentemente, após uma atualização do Windows e principalmente creio eu, após uma atualização do Framework.Ainda não testei no VWD mas, aparentemente o problema foi solucionado. Obrigadão pela atenção Macal.Vou por outro tópico agora que estou numa dúvida danada.Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.