Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hitta tomma värden från dropdownlista

Postades av 2006-10-16 17:32:26 - Magnus Öberg, i forum asp.net generellt, Tråden har 7 Kommentarer och lästs av 876 personer

Har en sida med en dropdown och en gridview där jag filtrerar posterna i gridview:en mha dropdownlistan. Några poster i databasen har tomma värden i det fält som visas i dropdownlistan vilket ger en tom rad längst upp i denna. Hur ska jag göra för att kunna välja denna tomma rad och därigenom visa dessa poster.

<script>
    Dim SQLString As String
    
    Protected Sub sokKlinik(ByVal sender As Object, ByVal e As System.EventArgs)
        SQLString = "SELECT * FROM [lakare] WHERE Klinik = '" & DropDownList2.SelectedValue & "'"
        AccessDataSource1.SelectCommand = SQLString
        Page.Focus()
    End Sub
</script>

        <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="ADSklinik"
 DataTextField="Klinik" DataValueField="Klinik" AutoPostBack="true" 
OnSelectedIndexChanged="sokKlinik" >
        </asp:DropDownList>

        <asp:AccessDataSource ID="ADSklinik" runat="server" DataFile="lakarfort.mdb" 
        SelectCommand="SELECT DISTINCT Klinik FROM [lakare]"></asp:AccessDataSource>

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" 
DataSourceID="AccessDataSource1" >
            <Columns>
                ....
                <asp:BoundField DataField="KLINIK" HeaderText="Klinik" SortExpression="KLINIK" >
                    <ItemStyle Wrap="False" />
                </asp:BoundField>
                ....
            </Columns>
        </asp:GridView>

<!--DataSource Gridview -->
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="lakarfort.mdb"
            SelectCommand="SELECT * FROM [lakare]">
            <SelectParameters>
                <asp:ControlParameter Name="Klinik" PropertyName="SelectedValue" ControlID="DropDownList2" 
ConvertEmptyStringToNull="false" />
            </SelectParameters>
        </asp:AccessDataSource>


Anledningen till att jag använder en sub för att byta ut select-satsen är att jag har flera dropdownlistor som jag söker från.


Svara

Sv: Hitta tomma värden från dropdownlista

Postades av 2006-10-16 19:58:02 - Andreas Hillqvist

Du bör (Skall) använda parameter frågor. Då din kod annars är sårbar för SQL-inject attacker.

Din SQL fråga bör se ut något sånt här:

SELECT *
FROM [lakare]
WHERE (Klinik = @Klinik) OR ((Klinik IS Null) AND (@Klinik IS Null))

Sedan anger du värdet för parameter @Klinik.

Om du vill skriva dålig kod.

Jag vet inte vad DropDownList2.SelectedValue retunerar. Om även den retunerar null:
    Protected Sub sokKlinik(ByVal sender As Object, ByVal e As System.EventArgs)
        If DropDownList2.SelectedValue Is DBNull.Value Then
            SQLString = "SELECT * FROM [lakare] WHERE Klinik = '" & DropDownList2.SelectedValue & "'"
        Else
            SQLString = "SELECT * FROM [lakare] WHERE Klinik IS Null"
        End If
        AccessDataSource1.SelectCommand = SQLString
        Page.Focus()
    End Sub

Annars om det är en tom sträng:
    Protected Sub sokKlinik(ByVal sender As Object, ByVal e As System.EventArgs)
        If DropDownList2.SelectedValue.length >0 Then
            SQLString = "SELECT * FROM [lakare] WHERE Klinik = '" & DropDownList2.SelectedValue & "'"
        Else
            SQLString = "SELECT * FROM [lakare] WHERE Klinik IS Null"
        End If
        AccessDataSource1.SelectCommand = SQLString
        Page.Focus()
    End Sub

Semantiken: If satsen kontrollera om den är tom eller inte och väljer fråga där efter.


Svara

Sv: Hitta tomma värden från dropdownlista

Postades av 2006-10-17 11:36:11 - Magnus Öberg

Tackar så hemskt mycket för svaret. Jag fick det att fungera med varianten SelectedValue.lengt > 0 dock inte om jag hade med parametrar i SELECT till GridView:en. Det gav samma resultat som förut, dvs att jag inte hittade några värden alls då dropdownlistvärdet var blank. Tack än en gång, man lär sig lite varje gång man är här.


Svara

Sv:Hitta tomma värden från dropdownlista

Postades av 2006-10-17 12:47:55 - Andreas Hillqvist

Så länge du är medveten om att din kod är sårbar för atttacker. Genom att lägga din applikation på en webserver kan du öppna öpp för attaker på servern och andra applikationer än din egen.
Om du kör din applikation på ett webbhotell kan du därmed din kod utgöra en risk för andra applikationer.

Så jag råder dig starkt att ta itur med SQL-inject sårbarheten i din kod.
Det är ditt ansvar som utvecklare!


Svara

Sv: Hitta tomma värden från dropdownlista

Postades av 2006-10-18 10:10:06 - Magnus Öberg

Jag ska titta vidare på parametermöjligheterna men denna applikation körs bara internt med ett begränsat antal användare så jag tror inte risken för sql-injektioner är särskilt överhängande.


Svara

Sv:Hitta tomma värden från dropdownlista

Postades av 2006-10-18 11:12:05 - Andreas Hillqvist

Jag är emot tanken på att inte åtgärda en känt risk/säkerhetshål.

Jag kommer ligga ororlig om natten och drömma hemska mardrömmar om SQL-inject attacker tills dess att du åtgärdat detta. ;-)


Svara

Sv: Hitta tomma värden från dropdownlista

Postades av 2006-10-18 12:27:54 - Magnus Öberg

Aj då, detta var illa. Jag kommer genast att intiera ett projekt som innebär att inga tomma fält får finnas i databasen med sluttid kl 22.00 i kväll. Därigenom kan frågan köras med parametrar och du får fullgod sömn och okar därför (förhoppningsvis) hjälpa mig med med framtida problem (vilka jag kan försäkra kommer att uppstå).


Svara

Sv:Hitta tomma värden från dropdownlista

Postades av 2006-10-18 15:35:36 - Andreas Hillqvist

Nu har jag lekt med en sida i Visual studio 2005. Har kommit fram till att det är jävligt svårt att skicka null till en parameter. Men en snabb lösning ser ut så här, desstuom behövs ingen jälvla kod:

		<asp:AccessDataSource 
			ID="ADSklinik" 
			runat="server" 
			DataFile="~/App_Data/lakarfort.mdb" 
			SelectCommand="SELECT DISTINCT Klinik
			               FROM [lakare]
			               WHERE Klinik IS NOT NULL"></asp:AccessDataSource>
		<asp:DropDownList 
			ID="DropDownList2" 
			runat="server" 
			DataSourceID="ADSklinik" 
			DataTextField="Klinik" 
			DataValueField="Klinik" 
			AutoPostBack="true" AppendDataBoundItems="true">
			<asp:ListItem Value="#alla#" Text="(Visa alla)"></asp:ListItem>
			<asp:ListItem Value="#null#" Text="(Visa tomma)"></asp:ListItem></asp:DropDownList>
		<asp:AccessDataSource 
			ID="AccessDataSource1" 
			runat="server" 
			DataFile="~/App_Data/lakarfort.mdb" 
			SelectCommand="PARAMETERS [@Klinik] Text ( 255 );
			               SELECT *
			               FROM [lakare]
			               WHERE ([@Klinik] = '#alla#') OR 
			                     ([Klinik] IS NULL AND [@Klinik] = '#null#') OR 
			                     ([Klinik] = [@Klinik])">
            <SelectParameters>
				<asp:ControlParameter 
					ControlID="DropDownList2" 
					DefaultValue="" 
					Name="Klinik" 
					PropertyName="SelectedValue"
					Type="String" />
            </SelectParameters>
        </asp:AccessDataSource>
        <asp:GridView 
			ID="GridView1" 
			runat="server" 
			AutoGenerateColumns="False" 
			DataSourceID="AccessDataSource1" >
			<Columns>
				<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" SortExpression="ID" />
				<asp:BoundField DataField="F&#246;rnamn" HeaderText="F&#246;rnamn" SortExpression="F&#246;rnamn" />
				<asp:BoundField DataField="Efternamn" HeaderText="Efternamn" SortExpression="Efternamn" />
				<asp:BoundField DataField="Klinik" HeaderText="Klinik" SortExpression="Klinik" />
			</Columns>
        </asp:GridView>

Jag antar att din databas ligger i samma katalog som din websidda. Detta innebär ett säkerhetsproblem. Hela databasen kan laddas ned. Det är därför det finns en App_Data mapp i vilket du kan lägga databasen.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 171
27 953
271 705
4 026
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies