Avatar billede tele_lucien Nybegynder
02. december 2002 - 13:30 Der er 38 kommentarer og
2 løsninger

UserControl..........Kan man det?

Hej med jer.........

Jeg har et spørgsmål eller to ang. en UserControl jeg har lavet, som er menuen på et site. I UserControl'n (menu.ascx), er der er et søgefelt. Grunden til at jeg har lavet et søgefelt der, er fordi den så går igen på alle aspx sider sammen med menu punkterne, så man kan lave en hurtig søgning. Søgefeltets Codebehind (menu.ascx.vb) indeholder så søgefunktionens kode.

Mit problem er at resultatet af en hurtig søgning skal jo ikke vises i menuen, så den skal redirectes til den side der hedder search.aspx, hvor <asp:datagrid /> er placeret.

Hvordan for jeg det til at hænge sammen? :-(

Mvh Lucien
Avatar billede burningice Nybegynder
02. december 2002 - 13:58 #1
response.redirect("search.aspx") ??
Avatar billede burningice Nybegynder
02. december 2002 - 13:59 #2
evt med en masse querystring

response.redirect("search.aspx?seach=yes&keyword="& textbox.Text &"&quick=yes&page=1")

page som eksempel
Avatar billede tele_lucien Nybegynder
02. december 2002 - 14:12 #3
OKay............ jeg har min lille submit button, som kørere denne kode:

Sub SubmitSearch(ByVal Source As System.Object, ByVal e As System.EventArgs)
        If Not IsPostBack Then
            Dim strConnection As String = Configuration.ConfigurationSettings.AppSettings("Autohuset")
            Dim objConnection As New SqlConnection(strConnection)
            objConnection.Open()

            Dim strSQL As String = "SELECT * FROM Brugere " & _
                                              "WHERE Varenr LIKE = '%" & txtSearch.Text & "%'" & _
                                              "OR Varenavn LIKE = '%" & txtSearch.Text & "%'"

            Dim objCommand As New SqlCommand(strSQL, objConnection)
            Dim objReader As SqlDataReader = objCommand.ExecuteReader()

            dgSearch.DataSource = objReader
            dgSearch.DataBind()
            objConnection.Close()
        End If
    End Sub

Hvordan skal jeg placere den redirect i min kode?
Avatar billede burningice Nybegynder
02. december 2002 - 14:30 #4
jamen... sagde du ikke at brugeren skulle redirectes til search.aspx hvor din datagrid er på?
Avatar billede tele_lucien Nybegynder
02. december 2002 - 14:47 #5
Jo............men søgefeltet ligger jo i UserControllen, og den ovenstående kode ligger i UserControllens Codebehind .vb fil.

På search siden ligger der kun <asp:datagrid /> der viser resultatet af søgningen.

Håber det hjalp lidt!
Avatar billede burningice Nybegynder
02. december 2002 - 15:07 #6
så skal du jo nok lave dette i usercontrollen

Sub SubmitSearch(ByVal Source As System.Object, ByVal e As System.EventArgs)
    response.redirect("search.aspx?keyword="& txtSearch.Text &"
End Sub

og på search.aspx:

Sub Page_Load

            Dim strConnection As String = Configuration.ConfigurationSettings.AppSettings("Autohuset")
            Dim objConnection As New SqlConnection(strConnection)
            objConnection.Open()

            Dim strSQL As String = "SELECT * FROM Brugere " & _
                                              "WHERE Varenr LIKE = '%" & Request.Querystring("keyword") & "%'" & _
                                              "OR Varenavn LIKE = '%" & Request.Querystring("keyword") & "%'"

            Dim objCommand As New SqlCommand(strSQL, objConnection)
            Dim objReader As SqlDataReader = objCommand.ExecuteReader()

            dgSearch.DataSource = objReader
            dgSearch.DataBind()
            objConnection.Close()

End Sub
Avatar billede tele_lucien Nybegynder
02. december 2002 - 15:13 #7
Prøver lige.............................. :-)
Avatar billede tele_lucien Nybegynder
02. december 2002 - 15:18 #8
Den redirecter som den skal med Querystring Keyword, men den viser ikke noget.

Er der noget galt med min DataReader?

Hvordan ligger jeg min datareader ind i en betingelse der siger, hvis der er fundet noget, så vis det, ellers så er der ikke fundet noget?
Avatar billede burningice Nybegynder
02. december 2002 - 15:22 #9
if (DataReader.Read() Then

end if
Avatar billede tele_lucien Nybegynder
02. december 2002 - 15:27 #10
Jeg ved ikke helt hvor det skal indkluderes henne, jeg er total newbie i asp.net.

Vil du ikke være så venlig at vise det i hele kode?

Mvh Lucien
Avatar billede burningice Nybegynder
02. december 2002 - 15:34 #11
Sub Page_Load(ByVal Source As System.Object, ByVal e As System.EventArgs)

            Dim strConnection As String = Configuration.ConfigurationSettings.AppSettings("Autohuset")
            Dim objConnection As New SqlConnection(strConnection)
            objConnection.Open()

            Dim strSQL As String = "SELECT * FROM Brugere " & _
                                              "WHERE Varenr LIKE = '%" & Request.Querystring("keyword") & "%'" & _
                                              "OR Varenavn LIKE = '%" & Request.Querystring("keyword") & "%'"

            Dim objCommand As New SqlCommand(strSQL, objConnection)
            Dim objReader As SqlDataReader = objCommand.ExecuteReader()
            If objReader.Read() Then
                dgSearch.DataSource = objReader
                dgSearch.DataBind()
            End If
            objConnection.Close()

End Sub
Avatar billede tele_lucien Nybegynder
02. december 2002 - 15:44 #12
Jeg for en syntax fejl!

Når jeg udskriver min sql ser det således ud:

SELECT * FROM Brugere WHERE Varenr LIKE = '%111%'OR Varenavn LIKE = '%111%'OR Pris LIKE = '%111%'OR Leverandør LIKE = '%111%'

Hvor er den gal henne?
Avatar billede tele_lucien Nybegynder
02. december 2002 - 15:49 #13
BTW............... jeg bruger MS SQL Server. Har det noget at sige m.h.t. til de % tegn der?
Avatar billede odegaard Nybegynder
02. december 2002 - 16:10 #14
Du skal have mellemrum før OR (alle steder)
Avatar billede tele_lucien Nybegynder
02. december 2002 - 16:15 #15
>> odegaard! Er gjort........ den kommer ikke med nogen fejl mere, men den viser ikke noget!?!?!?!

Min kode ser således ud nu:

Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs)
        Dim strConnection As String = Configuration.ConfigurationSettings.AppSettings("Autohuset")
        Dim objConnection As New SqlConnection(strConnection)
        objConnection.Open()

        Dim strSQL As String = "SELECT * FROM Brugere "
        strSQL += "WHERE Varenr LIKE = '%" & Request.QueryString("keyword") & "%'"
        strSQL += " OR Varenavn LIKE = '%" & Request.QueryString("keyword") & "%'"
        strSQL += " OR Pris LIKE = '%" & Request.QueryString("keyword") & "%'"
        strSQL += " OR Leverandør LIKE = '%" & Request.QueryString("keyword") & "%'"

        'Response.Write(strSQL)
        'Response.End()

        Dim objCommand As New SqlCommand(strSQL, objConnection)
        Dim objReader As SqlDataReader = objCommand.ExecuteReader()

        If objReader.Read() Then
            dgSearch.DataSource = objReader
            dgSearch.DataBind()
        Else
            lblNoResult.Text = "Der blev ikke fundet noget"
        End If

        objConnection.Close()
    End Sub

Er det rigtigt nok også med hensyn til If sætningen!

Mvh Lucien
Avatar billede odegaard Nybegynder
02. december 2002 - 16:38 #16
Bruger man ikke '*' i MSSQL istedet for '%' ?
Har du forsøgt uden if-sætningen ?
Avatar billede tele_lucien Nybegynder
02. december 2002 - 16:48 #17
Har prøvet med '*' dem her, og fjernet If sætningen.

Men det er underligt. Jeg bruger VS.NET, og der er AutoEventWireup="False" sat som default. Men hvis jeg vil udskrive min SQL så skal jeg slå den til True.....sært.

Stadig ingenting. Blank skærm! Hvordan ville du lave den if sætning der.
Avatar billede odegaard Nybegynder
02. december 2002 - 16:51 #18
jeg ville nu have fyldt et dataset, og så istedet benyttet dataset.tables(0).Rows.Count()=0
Avatar billede odegaard Nybegynder
02. december 2002 - 16:53 #19
Er du sikker på at der returneres noget?
Har du prøvet at nøjes med
"SELECT * FROM Brugere"
?
Avatar billede tele_lucien Nybegynder
02. december 2002 - 16:53 #20
OKay også selv om den bare hurtigt skal løbe en tabel igennem?!?!?!
Avatar billede tele_lucien Nybegynder
02. december 2002 - 17:03 #21
Fejlen ligger ikke i den kode der tror jeg ikke. Jeg har lige prøvet bare og sige SELECT * FROM Vare og den viser ikke en skid!

Jeg har også prøvet og smmide det i et DataSet nu!

kode:

Sub Page_Load(ByVal Source As System.Object, ByVal e As System.EventArgs)
        Dim strConnection As String = Configuration.ConfigurationSettings.AppSettings("Autohuset")
        Dim objConnection As New SqlConnection(strConnection)
        objConnection.Open()

        Dim strSQL As String = "SELECT * FROM Brugere "
        'strSQL += "WHERE Varenr LIKE = '%" & Request.QueryString("keyword") & "%'"
        'strSQL += " OR Varenavn LIKE = '%" & Request.QueryString("keyword") & "%'"
        'strSQL += " OR Pris LIKE = '%" & Request.QueryString("keyword") & "%'"
        'strSQL += " OR Leverandør LIKE = '%" & Request.QueryString("keyword") & "%'"

        Dim objAdapter As New SqlDataAdapter(strSQL, objConnection)
        Dim objDataSet As New DataSet()
        objAdapter.Fill(objDataSet)
        objConnection.Close()

        dgSearch.DataSource = objDataSet
        dgSearch.DataBind()
    End Sub

Var det sådan du mente odegaard?
Avatar billede odegaard Nybegynder
02. december 2002 - 17:22 #22
Nu er det vel ikke sådan at dgSearch ikke er erklæret i ascx-siden, men kun i din codebehind?
Er dgSearch.Visible=False ? Er dgSearch inde i et objekt hvis visible-property er False ?
Avatar billede tele_lucien Nybegynder
02. december 2002 - 17:41 #23
Håber det kan hjælpe,- :-(

Min Menu.ascx fil:

------------------------------------------------------------------------
<%@ Control Language="vb" AutoEventWireup="false" Src="Menu.ascx.vb" Inherits="Menu" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<table style="width:200px;" cellpadding="0" cellspacing="0" border="0">
  <tr>
    <td class="qSearch">
      <table cellpadding="2" cellspacing="0" border="0">
        <tr>
          <td width="8" rowspan="4"><img src="../Image/1x1.gif" /></td>
        </tr>
        <tr>
          <td><font color="White">Søg:</font></td>
        </tr>
        <tr>
          <td valign="top">
          <asp:TextBox
            ID="txtSearch"
            style="WIDTH: 140px; HEIGHT: 19px"
            CssClass="TextBox" Runat="Server"
          />
          &nbsp;&nbsp;
          <asp:Button
            ID="btnSearch"
        OnCLick="SubmitSearch"
        Text="Go"
        Runat="Server"
      />
          </td>
    </tr>
    <tr>
      <td><a class="white" href="https://www.e coders.com/autohuset/Secure/aSearch.aspx"">Avancerede søgning</a></td>
    </tr>
      </table>
    </td>
  </tr>
</table>



Min Menu.ascx.vb fil:

---------------------------------------------------------------------

Option Explicit On
Option Strict On

Imports System
Imports System.Web.UI
Imports System.Web.UI.UserControl
Imports System.Configuration
Imports System.Configuration.ConfigurationSettings
Imports System.Data
Imports System.Data.SqlClient


Public MustInherit Class Menu : Inherits System.Web.UI.UserControl

    Public txtSearch As System.Web.UI.WebControls.TextBox

    Sub SubmitSearch(ByVal Source As System.Object, ByVal e As System.EventArgs)
        Response.Redirect("qSearch.aspx?keyword=" & txtSearch.Text & "")
    End Sub
End Class



Min qSearch.aspx fil:

-----------------------------------------------------------------------------

<%@ Page Language="vb" AutoEventWireup="False" Debug="True" Src="qSearch.aspx.vb" Inherits="qSearch"%>
<%@ Register TagPrefix="UC" TagName="Header" Src="Controls/Header.ascx" %>
<%@ Register TagPrefix="UC" TagName="SubHeader" Src="Controls/SubHeader.ascx" %>
<%@ Register TagPrefix="UC" TagName="Footer" Src="Controls/Footer.ascx" %>
<%@ Register TagPrefix="UC" TagName="Menu" Src="Controls/Menu.ascx" %>
<html>
    <head>
        <title>Autohuset - Søg</title>
        <link href="Style/iestyle.css" type="text/css" rel="stylesheet" />
    </head>
    <body MS_POSITIONING="FlowLayout">
        <form id="Form1" Runat="Server">
            <table style="width:100%; height:100%;" align="center" cellpadding="0" cellspacing="0" border="0">
                <tr>
                    <td colspan="2" valign="top">
                        <UC:Header ID="Header" Runat="Server" Message="Velkommen til Autohuset" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2" valign="top">
                        <UC:SubHeader ID="SubHeader" Runat="Server" />
                    </td>
                </tr>
                <tr>
                    <td class="Menu" valign="top">
                        <UC:Menu ID="Menu" Runat="Server" />
                    </td>
                    <td style="height:100%;" valign="top">
                        <table style="width:560px;" cellpadding="5" cellspacing="5" border="0">
                            <tr>
                                <td>Søg:</td>
                            </tr>
                            <tr>
                                <td align="center">
                                    <asp:DataGrid
                                        ID="dgSearch"
                                        Runat="Server"
                                        ShowHeader="True"
                                        ShowFooter="False"
                                        CellPadding="5"
                                        CellSpacing="0"
                                        BorderStyle="Solid"
                                        BorderWidth="1"
                                        BorderColor="#cccccc"
                                        Font-Name="tahoma"
                                        Font-Size="8pt"
                                        BackColor="#f0f1f6"
                                    />
                                    <asp:Label ID="lblNoResult" Runat="server" />
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" style="height:100%;"><img src="Image/1x1.gif" /></td>   
                </tr>
                <tr>
                    <td colspan="2" valign="bottom"><UC:Footer ID="ucFooter" Runat="Server" /></td>
                </tr>
            </table>
        </form>       
    </body>
</html>


Min qSearch.aspx.vb fil:

-----------------------------------------------------------------------------

Option Explicit On
Option Strict On

Imports System
Imports System.Web.UI
Imports System.Web.UI.UserControl
Imports System.Configuration
Imports System.Configuration.ConfigurationSettings
Imports System.Data
Imports System.Data.SqlClient

Public Class qSearch : Inherits System.Web.UI.Page

    Public dgSearch As System.Web.UI.WebControls.DataGrid
    Public lblNoResult As System.Web.UI.WebControls.Label

    Sub Page_Load(ByVal Source As System.Object, ByVal e As System.EventArgs)
        If Not Page.IsPostBack Then
            DataFiller()
        End If
    End Sub

    Sub DataFiller()
        Dim strConnection As String = Configuration.ConfigurationSettings.AppSettings("Autohuset")
        Dim objConnection As New SqlConnection(strConnection)
        objConnection.Open()

        Dim strSQL As String = "SELECT * FROM Brugere "
        strSQL += "WHERE Varenr LIKE = '%" & Request.QueryString("keyword") & "%'"
        strSQL += " OR Varenavn LIKE = '%" & Request.QueryString("keyword") & "%'"
        strSQL += " OR Pris LIKE = '%" & Request.QueryString("keyword") & "%'"
        strSQL += " OR Leverandør LIKE = '%" & Request.QueryString("keyword") & "%'"
        Dim objAdapter As New SqlDataAdapter(strSQL, objConnection)

        Dim objDataSet As New DataSet()
        objAdapter.Fill(objDataSet, "dtVare")

        dgSearch.DataSource = objDataSet.Tables.Item("dtVare")
        dgSearch.DataBind()
        objConnection.Close()

    End Sub

End Class
Avatar billede tele_lucien Nybegynder
02. december 2002 - 17:43 #24
Hvis du kan opklare mysteriet så skal jeg nok give dig flere points!

For jeg kan ikke komme videre.......... øv øv!

Mvh Lucien
Avatar billede odegaard Nybegynder
02. december 2002 - 17:51 #25
Nu gider jeg ikke lige teste det selv, men prøv lige følgende (sådan gør jeg selv):
  objAdapter.Fill(objDataSet, "dtVare")
  dgSearch.DataSource = objDataSet.Tables.Item("dtVare")
rettes til
  objAdapter.Fill(objDataSet)
  dgSearch.DataSource = objDataSet

Desværre tror jeg ikke at det er det :-)

Må jeg forresten spørge hvorfor du har en <form> og "If Not Page.IsPostBack Then" når du ikke har noget der poster tilbage til siden?

Prøv at lave en
    response.write("Antal rækker:" & objDataSet.Tables(0).Rows.Count().ToString())
    response.write("<br/>SQL:" & strSQL)
og se om dette ikke afslører nogle fejl.
Avatar billede tele_lucien Nybegynder
02. december 2002 - 17:59 #26
OKay.........hvor skal jeg placere den her:

response.write("Antal rækker:" & objDataSet.Tables(0).Rows.Count().ToString())
response.write("<br/>SQL:" & strSQL)
Avatar billede odegaard Nybegynder
02. december 2002 - 18:04 #27
efter du lukker objConnection var et forslag.
Avatar billede tele_lucien Nybegynder
02. december 2002 - 18:08 #28
Der sker ikke en skid!

Du kan prøve her: http://www.e-coders.com/autohuset
Avatar billede odegaard Nybegynder
02. december 2002 - 18:16 #29
Ok, lad os lige prøve at koge den ned til at være så simpel som mulig, og med nogle debug-information udskrevet:
-------------------------------
Option Explicit On
Option Strict On

Imports System
Imports System.Web.UI
Imports System.Web.UI.UserControl
Imports System.Configuration
Imports System.Configuration.ConfigurationSettings
Imports System.Data
Imports System.Data.SqlClient

Public Class qSearch : Inherits System.Web.UI.Page

    Public dgSearch As System.Web.UI.WebControls.DataGrid
    Public lblNoResult As System.Web.UI.WebControls.Label

    Sub Page_Load(ByVal Source As System.Object, ByVal e As System.EventArgs)
        Dim strConnection As String = Configuration.ConfigurationSettings.AppSettings("Autohuset")
        Dim objConnection As New SqlConnection(strConnection)
        response.write("Forbinder til " & strConnection)
        objConnection.Open()

        Dim strSQL As String = "SELECT * FROM Brugere"
        response.write("Søger på: " & strSQL)
        Dim objAdapter As New SqlDataAdapter(strSQL, objConnection)
        Dim objDataSet As New DataSet()
        objAdapter.Fill(objDataSet)
        response.write("Antal rækker:" & objDataSet.Tables(0).Rows.Count())

        dgSearch.DataSource = objDataSet
        dgSearch.DataBind()
        objConnection.Close()
    End Sub
End Class
-------------------------------
Avatar billede tele_lucien Nybegynder
02. december 2002 - 18:22 #30
OKarj.................har copy pastet koden!

Nothing!!!!!!!!! Så den kører ikke den kode en skid, tror jeg.

:-(
Avatar billede odegaard Nybegynder
02. december 2002 - 18:28 #31
nej du burde får noget response.write tekst ud. Så ligger fejlen nok et helt andet sted :-)
Måske skulle vi prøve at forsimple din "code-infront" fil også:

<%@ Page Language="vb" Src="qSearch.aspx.vb" Inherits="qSearch"%>
<html>
<body>
<asp:DataGrid ID="dgSearch" runat="Server" />
<asp:Label ID="lblNoResult" runat="server" />
</body>
</html>
Avatar billede tele_lucien Nybegynder
02. december 2002 - 18:31 #32
Prøv og kig nu!

Jeg prøvede at slå AutoEventWireUp til True, så kom det sgu!

http://www.e-coders.com/autohuset
Avatar billede tele_lucien Nybegynder
02. december 2002 - 18:37 #33
Hvad fanden gør den AutoEventWireup godt for!!!!!

Den er jo direkte skummel!

Nå prøver at se om den vil spise den lille querystring der. Jeg skruver lige om lidt igen!

Men tak for hjælpen indtil videre odegaard og cyberfessor! ;-)
Avatar billede odegaard Nybegynder
02. december 2002 - 18:41 #34
Jamen det er jo smukt.

Fandt iøvrigt det her, hvilket jo forklarer en del :-)
"If the AutoEventWireup attribute of the Page directive is set to true (or if it is missing, since by default it is true), the page framework calls page events automatically, specifically the Page_Init and Page_Load methods. In that case, no explicit Handles clause or delegate is needed."

Det var derfor at jeg valgte at fjerne alt hvad der ikke umiddelbart er vigtigt for selve funktionen. Hvis det hjælper, er det nok et andet sted i koden at der er noget galt... (hvilket endnu engang var sandt)
Avatar billede tele_lucien Nybegynder
02. december 2002 - 18:44 #35
Det virker!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Fuck mand.

Jeg kan kun sige tusin tak for hjælpen! Det er for cool af jer!

I for 30 points hver er det okay?

Cyberfessor lig lige et svar!

Mvh lucien
Avatar billede tele_lucien Nybegynder
02. december 2002 - 19:01 #36
Hvofor kan jeg ikke gøre sådan her:

If objAdapter.Fill(objDataSet) Then
            dgSearch.DataSource = objDataSet
            dgSearch.DataBind()
        Else
            lblNoResult.Text = "Der blev ikke fundet noget"
        End If
Avatar billede burningice Nybegynder
02. december 2002 - 21:14 #37
hehe... har lige fået mig en aftenlur... det er ikke sårn når man kun fik sovet 1½ time sidste nat ;)

svar...
Avatar billede tele_lucien Nybegynder
02. december 2002 - 21:16 #38
hehehe.................okay!

30 / 2

Hygge
Avatar billede tele_lucien Nybegynder
02. december 2002 - 21:17 #39
Ups......... kommer her
Avatar billede burningice Nybegynder
02. december 2002 - 21:23 #40
hehehe.. kan godt li' din søgeting ligner en hvis *host* andens *host*... *host MS *host* ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester