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


Sorteringsproblem

Postades av 2005-04-20 09:27:17 - Joachim Feldt, i forum asp.net generellt, Tråden har 4 Kommentarer och lästs av 446 personer

Hej,
Jag vet att frågan dykt föör och jag har sökt, men hittar ingen lösning på mitt problem.

På mitt formulär söker man efter kemikalier. När man klicka på sökknappen fylls en DataGrid med resultatet. Denna DataGrid vill jag sedan kunna sortera, men får det inte att funka.

Jag har satt "allowsorting" till true.

OnclickEventet(den som fyller datagriden) ser ut så här:
<b>tdsChemical</b> är deklarerad längst upp i klassen.

Private Sub loadChemicals()

        Dim dvChemical As DataView
        Dim objFacade As Facade_Services.fcdMaintainChemical

        Try

            objFacade = New Facade_Services.fcdMaintainChemical
            
            'Create dataset
            tdsChemical = objFacade.getAllChemicals()
            dvChemical = tdsChemical.Tables(0).DefaultView

            
            'Chemical Name column
            Dim sName As New BoundColumn
            sName.DataField = "chemical_name"
            sName.SortExpression = "chemical_name"
            sName.Visible = True
            sName.HeaderText = "Name"
            sName.HeaderStyle.ForeColor = System.Drawing.Color.White
            sName.ItemStyle.Width.Pixel(140)
            sName.HeaderStyle.CssClass = "ListHeader"
            dgSearchResult.Columns.AddAt(0, sName)
            sName = Nothing

            'Cas No column
            Dim sCasNo As New BoundColumn
            sCasNo.DataField = "cas_no"
            sCasNo.SortExpression = "cas_no"
            sCasNo.Visible = True
            sCasNo.HeaderText = "CAS No"
            sCasNo.HeaderStyle.ForeColor = System.Drawing.Color.White
            sCasNo.ItemStyle.Width.Pixel(100)
            sCasNo.HeaderStyle.CssClass = "ListHeader"
            dgSearchResult.Columns.AddAt(1 sCasNo)
            sCasNo = Nothing

            'Mol Formula column
            Dim sMolFormula As New BoundColumn
            sMolFormula.DataField = "mol_formula"
            sMolFormula.SortExpression = "mol_formula"
            sMolFormula.Visible = True
            sMolFormula.HeaderText = "Mol formula"
            sMolFormula.HeaderStyle.ForeColor = System.Drawing.Color.White
            sMolFormula.ItemStyle.Width.Pixel(100)
            sMolFormula.HeaderStyle.CssClass = "ListHeader"
            dgSearchResult.Columns.AddAt(2, sMolFormula)
            sMolFormula = Nothing


            dgSearchResult.DataSource = dvChemical
            dgSearchResult.DataBind()

            dgSearchResult.Visible = True

            'Manage exceptions

        Catch eRuntime As Exception 'Runtime error in this method (unknown)
            'Lite felhantering...

        Finally

            objFacade = Nothing
            If Not IsNothing(tdsChemical) Then tdsChemical.Dispose()
            tdsChemical = Nothing

        End Try

    End Sub


Sen har jag lagt följande på "sortcommandet" för datagriden:
Private Sub dgSearchResult_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) 
Handles dgSearchResult.SortCommand

        Dim SortView As DataView
        SortView = tdsChemical.Tables(0).DefaultView
        SortView.Sort = e.SortExpression
        dgSearchResult.DataSource = SortView
        dgSearchResult.DataBind()

    End Sub


När jag klickar på en rubrik blir datgriden tom.

Är det något mer jag behöver göra, eller har jag gjort något fel??

/Jocke


Svara

Sv: Sorteringsproblem

Postades av 2005-04-20 10:21:31 - Martin Emanuelsson

Om du inte fyller din tdsChemical varje gång i PageLoad eller sparar den i Viewstate eller nåt liknande så skulle jag tro att du måste fylla din tdsChemical före du gör sorteringen igen. Skulle tro att det är det som är problemet.

Går att lösa på lite snyggare sätt så att du slipper anropa databasen varje gång du postar om sidan men det borde lösa problemet du har i nuläget iaf.


Svara

Sv:Sorteringsproblem

Postades av 2005-04-20 22:50:54 - Joachim Feldt

Hej,
Jag skapar ju mitt dataset "globalt" längst upp på sidan. Sen binder det till datagriden vid knapptryckningen.
Borde inte det vara tillängligt i sortcommandet då?

Hur skulle en snyggare lösning se ut menar du? Jag har ganska gott om tid med detta, så jag kan göra om det om det finns något bättre/snyggare sätt.

/Jocke


Svara

Sv: Sorteringsproblem

Postades av 2005-04-21 08:14:50 - Ola Lindfeldt

Ditt Dataset dör när sidan skickas ut till klienten, om du inte explicit sparar det (det hjälper inte att det är globalt.. jo som global Application-variabel då men det rekommenderas inte..)
Du kan spara det i session, viewstate, eller slå upp i databasen igen.
Du bör inte spara i session eller viewstate om det är väldigt mycket data, då är det bättre att gå till databasen igen.
Gör en RefreshData() metod som du anropar vid första laddningen av sidan men ÄVEN vid sort command (först). Du kan senare bestämma vad som ska hända i RefreshData() alltså slå upp i databasen eller hämta från Viewstate.



Svara

Sv:Sorteringsproblem

Postades av 2005-04-21 08:39:37 - Martin Emanuelsson

Precis som Ola skriver måste du hantera state i din ASP.NET applikation, förutom de varianter som Ola nämner (Session, ViewState) så finns ju bland andra även Application och Cachning av data. Hittade en kort beskrivning av lite olika varianter här: http://www.extremeexperts.com/Net/FAQ/StateManagementInASPNET.aspx. Sen om du bara "googlar" efter typ ASP.NET och state management så lär du få i princip hur många träffar som helst som kan hjälpa dig.

Som Ola också skriver bör man undvika viewstate om det är stora mängder data men jag tänkte ändå visa hur du kan göra i ditt fall för att på ett smidigt sätt spara undan ditt dataset i Viewstate. Om du lägger till följande kod på din sida så borde det funka bra.

<code>
#Region "Viewstate Handling"
Protected Overrides Sub LoadViewState(ByVal savedState As Object)
Dim values() As Object = DirectCast(savedState, Object())
If Not savedState Is Nothing Then
MyBase.LoadViewState(values(0))
tdsChemical = DirectCast(values(1), DataSet)
End If
End Sub

Protected Overrides Function SaveViewState() As Object
Dim values(1) As Object
values(0) = MyBase.SaveViewState()
values(1) = tdsChemical
Return values
End Function
#End Region
</code>

Den här koden kan du sen enkelt utöka om det är fler variabler eller objekt som du vill behålla mellan postningar av sidan.

EDIT: Nine Options for Managing Persistent User State in Your ASP.NET Application --> http://msdn.microsoft.com/msdnmag/issues/03/04/ASPNETUserState/default.aspx


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 602
27 953
271 705
5 896
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