Ir para conteúdo

POWERED BY:

Arquivado

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

hpires24

Botao de procura e devolver numa grid o resultado

Recommended Posts

Bom dia,

 

olha estou a tentar fazer um metodo que me faça uma procura de um determinado texto q esta numa textbox e que me devolva o resultado numa grid e esotu a tentar fazer assim:

CODE
Protected Sub ButtonProc_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonProc.Click

If Page.IsValid Then

 

Dim dr As SqlDataReader = Nothing

Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("SLConnectionString").ToString)

 

Dim objCommand As SqlCommand

Try

conn.Open()

objCommand = New SqlCommand("usp_ProcuraLinha", conn)

objCommand.CommandType = CommandType.StoredProcedure

 

objCommand.Parameters.Add("@lintaginicio", SqlDbType.Char)

objCommand.Parameters("@lintaginicio").Value = TextBoxProc.Text

 

'objCommand.ExecuteNonQuery()

dr = objCommand.ExecuteReader(CommandBehavior.CloseConnection)

If dr.HasRows Then

GridView1.DataBind()

Me.GridView1.Visible = True

 

 

Else

Me.Label5.Visible = True

Me.GridView1.Visible = False

 

End If

 

Catch ex As SqlException

'Response.Write(ex.ToString)

Response.Redirect("~/errordb.aspx")

Finally

conn.Close()

End Try

 

End If

 

 

Me.DataGridAreaInvestigacao.Visible = False

'Me.GridView1.DataBind()

'Me.GridView1.Visible = True

 

 

 

End Sub

 

onde a query é a seguinte:

 

ALTER     procedure [dbo].[usp_ProcuraLinha]


@lintaginicio  varchar (255)
as select *
From Linhas where LIN_TAGINI_ID Like @lintaginicio

 

 

e o q se esta a passar é o seguinte :

 

ele se nao existir linhas entao devolve a msg de erro q tenho na label5 ate aqui tudo correcto, mas se existe essa linha que eu insiro mostra-me na grid todos os registos existentes nessa tabela e eu queria que me mostra-se apenas por ex o registo y7u8i89 da-me a ideia que ele faz o bind de tudo e eu queria que ao fazero bind mostra-se sim todos os campos mas so afectos a este registo y7u8i89 .

 

Obrigado a todos desde ja.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua coleção de retorno é o 'dr', que é preenchido por um ExecuteReader.

Você tem certeza que o seu GridView está está fazendo DataBind no dr?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um breakpoint na linha GridView1.DataBind() e veja qual é a coleção que ele realmente esta tratando.

Não acho que seja a mesma do 'dr'.

Poste aqui o código do GridView para vermos o DataSource, etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda amigo mas tou dando em tolo o codigo do meu grid é:

 

CODE

<asp:GridView DataKeyNames="LIN_ID" Width="100%" ID="GridView1" runat="server" BorderWidth="0px" AutoGenerateColumns="False" DataSourceID="SqlDataSourcecarregaDG2" AllowPaging="True" AllowSorting="True">

<Columns>

<asp:TemplateField HeaderText="Ver" ShowHeader="False">

<ItemTemplate>

<asp:ImageButton ID="LinkButton1" runat="server" CausesValidation="false" CommandName="Select"

ImageUrl="~/imagens/ZoomHS.png"></asp:ImageButton>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField DataField="LIN_ID" HeaderText="Identificação" SortExpression="LIN_ID" />

<asp:BoundField DataField="LIN_TAGINI_ID" HeaderText="Tag Início" SortExpression="LIN_TAGINI_ID" />

<asp:BoundField DataField="LIN_TAGFIN_ID" HeaderText="Tag Fim " SortExpression="LIN_TAGFIN_ID" />

<asp:BoundField DataField="LIN_ANO_PL" HeaderText="Ano Plantação " SortExpression="LIN_ANO_PL" />

 

<asp:TemplateField ShowHeader="False" HeaderText="Apagar">

<ItemTemplate>

<asp:CheckBox ID="chk1" runat="server" />

<asp:Label ID="Label9" runat="server" Visible="false" Text='<%# Bind("LIN_ID") %>' ></asp:Label>

 

 

</ItemTemplate>

<ItemStyle HorizontalAlign="Center" />

</asp:TemplateField>

 

 

</Columns>

<FooterStyle BackColor="#990000" ForeColor="White" Font-Bold="True" />

<RowStyle BackColor="#D1EEEE" HorizontalAlign="Center" ForeColor="#333333" />

<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />

<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />

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

<AlternatingRowStyle BackColor="White" />

</asp:GridView>

 

 

Obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto, está dada a resposta. Seu GridView se baseia em um DataSoucer que não é a resposta do filtro feito pelo objCommand.ExecuteReader().

 

Remova o DataSourceID do GridView e, em tempo de execução, faça o seguinte:

...
'objCommand.ExecuteNonQuery()
 dr = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
If dr.HasRows Then
	GridView1.DataSource = dr
	GridView1.DataBind()
	Me.GridView1.Visible = True
...

Não sou bom em VB, mas a idéia é essa...

 

PS: Não esqueça de apagar a definição DataSourceID.

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.