Archief - Methode wordt niet gevonden in ASP

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

nck2040

Legacy Member
Voor school ben ik bezig met in project in ASP. We moeten werken met een database zodat je via een gridview kan editen en deleten enz. Daarbij maken we gebruik van de 3 lagen structuur met een DAL en BLL.

Nu had ik eerst mijn project gemaakt zonder OptimisticConcurrency maar dit moet voor de opdracht en nu probeer ik het dus aan te passen. Momenteel heb ik mij delete kunnen aanpassen maar bij het editen zegt hij dat hij hetvolgende:
ObjectDataSource AlleArbeiders kon geen niet-generieke methode UpdateArbeider vinden met parameters: magazijn_nr, naam, voornaam, leeftijd, contractverval, werkdagen, original_arbeider_nr, original_magazijn_nr, original_naam, original_voornaam, original_leeftijd, original_contractverval, original_werkdagen.

En dit is mijn code voor die methode (in mijn ArbeidersBLL)

Code:
<System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, True)> _
  Public Function UpdateArbeider(ByVal arbeider_nr As Integer, _
                                 ByVal magazijn_nr As Integer, _
                                 ByVal naam As String, _
                                 ByVal voornaam As String, _
                                 ByVal leeftijd As Integer, _
                                 ByVal contractverval As Nullable(Of Date), _
                                 ByVal werkdagen As Nullable(Of Integer), _
                                    ByVal original_arbeider_nr As Integer, _
                                    ByVal original_magazijn_nr As Integer, _
                                    ByVal original_naam As String, _
                                    ByVal original_voornaam As String, _
                                    ByVal original_leeftijd As Integer, _
                                    ByVal original_contractverval As Nullable(Of Date), _
                                    ByVal original_werkdagen As Nullable(Of Integer)) As Boolean
    Dim arbeiders As Fabriekbeheer.tbl_arbeiderDataTable = Adapter.GetArbeiderByNr(arbeider_nr)

    If arbeiders.Count = 0 Then
      ' no matching record found, return false
      Return False
    End If

    Dim arbeider As Fabriekbeheer.tbl_arbeiderRow = arbeiders(0)

    AssignAllArbeiderValues( _
    arbeider, original_magazijn_nr, original_naam, original_voornaam, _
    original_leeftijd, original_contractverval, original_werkdagen)

    arbeider.AcceptChanges()

    AssignAllArbeiderValues( _
    arbeider, magazijn_nr, naam, voornaam, leeftijd, contractverval, werkdagen)


    ' Update the product record
    Dim rowsAffected As Integer = Adapter.Update(arbeider)

    ' Return true if precisely one row was updated, otherwise false
    Return rowsAffected = 1
  End Function

zit mij hier al hele tijd op blind te staren en zou nochtans simpel moeten op te lossen zijn. Op mijn pagina met gridview had ik bij het begin van mijn project OldValuesParametersForm op {0} gezet maar die heb ik inmiddels veranderd naar original_{0} en ConflictDetection staat op CompareAllValues.

pietje666

Legacy Member
kga het nu ni allemaal nazien en natellen, maar geeft gij bij aanroep evenveel parameters mee? en allemaal van het juiste type?

nck2040

Legacy Member
Ik denk het wel, ben nu nog eens mijn andere BLLs aant omvormen naar OptimisticConcurrency om te zien of het daar mss lukt. Is mij wel nog opgevallen dat bij die
Adapter.getArbeiders(arbeider_nr)
moet
Adapter.getArbeiders(original_arbeider_nr)
zijn

maar dit lost het probleem nog niet op ..

Parnakra

Legacy Member
Uit je foutmelding blijkt dat je de methode oproept met een parameter te weinig (de eerste, arbeider_nr).

Trouwens, doe jezelf een plezier en werk in het Engels (en in C#). Zo wordt googlen op foutmeldingen heel wat eenvoudiger.

nck2040

Legacy Member
De opdracht is in ASP dus ik kan moeilijk even in C# gaan werken (dat moeten we wel voor een andere opdracht). Nu, de methode die ik hier heb gepost bevat toch arbeider_nr? verdwijnt die niet gewoon in de foutmelding omdat die al als DataKey op mijn GridView staat of iets met die original_{0}?

Cheshire Cat

Legacy Member
nck2040 zei:
De opdracht is in ASP dus ik kan moeilijk even in C# gaan werken...

Ge kunt even gemakkelijk in C#.NET werken als dat ge nu in VB.NET werkt, hoor. De bovenstaande code is namelijk geen ASP.NET code. :p

nck2040

Legacy Member
Ja swaar, kheb het gewoon even verkeerd verwoord :) , maar opdracht is dus in VB... Ik denk niet dat docent zal appreciëren als je daarvan afwijkt, we werken overigens ook nog in Framework 2.0 ..

Parnakra

Legacy Member
nck2040 zei:
De opdracht is in ASP dus ik kan moeilijk even in C# gaan werken (dat moeten we wel voor een andere opdracht).
Ah, mijn fout. Ik had verkeerd gelezen. Natuurlijk hang je vast aan VB als je in ASP werkt. Hoe kom ik er toch bij.
nck2040 zei:
Nu, de methode die ik hier heb gepost bevat toch arbeider_nr? verdwijnt die niet gewoon in de foutmelding omdat die al als DataKey op mijn GridView staat of iets met die original_{0}?
Het gaat over het (of een) moment waarop je die methode oproept.

nck2040

Legacy Member
Ik heb het kunnen oplossen :D , wel eigenlijk iets heel vreemd. Ik heb dus nog eens naar mijn EditItemTemplate van het label van arbeider_nr gekeken en daarvan de DataBinding. Die stond eerst op zo'n standaard binding wizard en heb em dan op custom gezet, dan werkte het, maar als ik nu trug kijk staat het trug identiek als daarvoor eig maar toch werkt het... Mss dat ergens die Bind niet meer goed doorgevoerd werd ofzo. Heel eigenaardig vind ik wel maar kan gelukkig zijn :P
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan