ASP.net Update Record GridView lukt niet.

Pagina: 1
Acties:

  • WasBak
  • Registratie: September 2000
  • Niet online
Ik heb een pagina waarin een GridView zit en daarvan wil ik gebruikers gaan editten. Ik ben echt nog een beginnende ASP gebruiker en kom er echt niet uit. Ben al een hele tijd gaan googlen en op het GoT forum kwam ik ook niet verder.

Ik gebruik zelf gewoon een SqlDataSource met een SelectCommand en een UpdateCommand. Het ziet er ongeveer uit zoals de code uit de Visual Studio documentatie hieronder. Alleen dan met mijn eigen velden etcetera.

Het lukt dus ook niet via de code uit Visual Studio doc, ik krijg dezelfde foutmelding als met mijn eigen code en mijn eigen database.

De code van VS doc.
ASP.NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<html>
<head id="Head1" runat="server">
    <title>Edit GridView</title>
</head>
<body>
    <form id="Form1" runat="server">
    <asp:GridView ID="GridView1"  
        DataSourceID="ProductsSource"
        AutoGenerateEditButton="true"
        DataKeyNames="ProductID"
        Runat="Server" />
    
    <asp:SqlDataSource 
        ID="ProductsSource"
        connectionstring="<%$ ConnectionStrings:sim %>"
        SelectCommand=
          "SELECT ProductID,ProductName,Discontinued FROM Products"
        UpdateCommand="Update Products 
            SET ProductName=@ProductName,Discontinued=@Discontinued 
            WHERE ProductID=@ProductID"
        Runat="Server" 
        providername="<%$ ConnectionStrings:sim.ProviderName %>" />
    </form>
</body>
</html>


Wat mijn probleem is, zodra ik dus op "Update" klik. Krijg ik een melding dat er te weinig parameters zijn.

ERROR [07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3.

Als ik de waarde handmatig invul, dus tussen haakjes. Komen de waardes wel gewoon in de database. Mijn gevoel zegt dus gewoon dat de @ProductID gewoon niet gevuld worden op de een of andere manier.

Het zal wel iets kleins zijn, maar ik kom er echt niet meer uit. }:O

[ Voor 20% gewijzigd door WasBak op 08-03-2006 14:11 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:47

mulder

ik spuug op het trottoir

Ik zie je nergens parameters meegeven?

oogjes open, snaveltjes dicht


  • WasBak
  • Registratie: September 2000
  • Niet online
Don Facundo schreef op woensdag 08 maart 2006 @ 14:22:
Ik zie je nergens parameters meegeven?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
<body>
<form id="Form1" runat="server">
<asp:gridview id="GridView1" runat="server" autogeneratecolumns="False" datakeynames="LE_LOGINID"
    datasourceid="sqlLeerlingen">
 <Columns>
<asp:CommandField ShowEditButton="True" EditText="Wijzigen" CancelText="Annuleren" UpdateText="Opslaan" />
<asp:BoundField readonly="True" DataField="LE_ID" SortExpression="LE_ID" HeaderText="ID"></asp:BoundField>
<asp:BoundField ReadOnly="True" DataField="LE_LOGINID" SortExpression="LE_LOGINID" HeaderText="Login"></asp:BoundField>
<asp:BoundField DataField="LE_NAAM" SortExpression="LE_NAAM" HeaderText="Volledige Naam"></asp:BoundField>
<asp:BoundField DataField="LE_KLASID" SortExpression="LE_KLASID" HeaderText="Klas"></asp:BoundField>
<asp:BoundField DataField="LE_PROFIELID" SortExpression="LE_PROFIELID" HeaderText="Profiel"></asp:BoundField>
<asp:BoundField DataField="LE_DOCENT" SortExpression="LE_DOCENT" HeaderText="Docent"></asp:BoundField>
</Columns>
</asp:gridview>

<asp:sqldatasource 
    id="sqlLeerlingen" 
    runat="server" 
    connectionstring="<%$ ConnectionStrings:sim %>"
    providername="<%$ ConnectionStrings:sim.ProviderName %>" 
    selectcommand="SELECT [LE_ID], [LE_NAAM], [LE_KLASID], [LE_PROFIELID], [LE_DOCENT], [LE_LOGINID], [LE_WACHTWOORD] FROM [LE]"
    updatecommand="UPDATE [LE] SET [LE_NAAM]=@LE_NAAM, [LE_KLASID]=@LE_KLASID, [LE_PROFIELID]=@LE_PROFIELID, [LE_DOCENT]=@LE_DOCENT WHERE [LE_ID]=@LE_ID">
    <UpdateParameters>
        <asp:Parameter Name="LE_ID" Type="int32" />
        <asp:Parameter Name="LE_NAAM" Type="string" />
        <asp:Parameter Name="LE_KLASID" Type="string" />
        <asp:Parameter Name="LE_PROFIELID" Type="string" />
        <asp:Parameter Name="LE_DOCENT" Type="string" />
        <asp:Parameter Name="LE_LOGINID" Type="string" />
    </UpdateParameters>
</asp:sqldatasource>
</form>
</body>
</html>


Ik heb het zo in mijn eigen code.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:47

mulder

ik spuug op het trottoir

Een of meerdere van die parameters zal leeg zijn? Vind het ook raar dat je 'expected 3' krijgt terwijl in jou code er 5 staan?

oogjes open, snaveltjes dicht


  • WasBak
  • Registratie: September 2000
  • Niet online
Don Facundo schreef op woensdag 08 maart 2006 @ 15:17:
Een of meerdere van die parameters zal leeg zijn? Vind het ook raar dat je 'expected 3' krijgt terwijl in jou code er 5 staan?
Bij mij staat er 5 en bij de code van de Visual Studio documentatie staan er 3. Dat is verder gewoon correct. Ik edit ze zelf met waarde, dus ze zijn naar mijn weten niet leeg.

[ Voor 6% gewijzigd door WasBak op 08-03-2006 15:23 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:47

mulder

ik spuug op het trottoir

De foutmelding betekent een ontbrekende parameter of dat deze de waarde NULL heeft. Moet je niet een @ voor de parameter naam zetten?

[ Voor 9% gewijzigd door mulder op 08-03-2006 15:30 ]

oogjes open, snaveltjes dicht


  • WasBak
  • Registratie: September 2000
  • Niet online
Ik heb nu geen SqlDataSource gebruikt, maar een AccessDataSource. Nu werkt het wel, alleen wil ik het graag via mijn SqlDataSource(ODBC link) toch werkend krijgen.

Als ik een Trace doe met de ODBC Monitor krijg ik de volgende meldingen.

code:
1
2
3
4
5
6
7
1444    Connect 0   Success+Info    0.02    Dsn=beheer
1444    Bind    75437352    Success     Parameter: 1 Value: test
1444    Bind    75437352    Success     Parameter: 2 Value: test222
1444    Bind    75437352    Success     Parameter: 3 Value: test
1444    Bind    75437352    Success     Parameter: 4 Value: Ja
1444    Bind    75437352    Success     Parameter: 5 Value: L100246
1444    Execute 75437352    Error   0.03    UPDATE [LE] SET LE_NAAM = @LE_NAAM, LE_KLASID = @LE_KLASID WHERE LE_PATID = 125


:'(
Pagina: 1