I have an asp.net webproject with a datagrid and stored procedure for update. I try to reuse old database and stored procedures on SQL Server from a previous project.
When I try to do update I get System.Data.SqlClient.SqlException: Procedure or function lpsp_VersjonerUpdateTest has too many arguments specified. The stored procedure is a very simple procedure made for test purposes, it does nothing at the moment.
For test purposes I try to call the procedure by pressing a button outside the datagrid. It seems to work perfectly, I get no errors.
Then I try to call the same stored procedure by pressing "Edit" and then "update" in datagrid column, and I use the DataGrid1.RowUpdating event to modify parameter values. The problem is I get the error above.
Since I get no error when I call the stored procedure from a separate button, I guess I have som problem with my DataGrid1(?). How can I fix this?
Regards
Tore
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Datasheet_versjoner.aspx.cs" Inherits="LønnsplanWeb.Datasheet_versjoner" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><title></title></head><body><form id="form1" runat="server"><div><asp:Button ID="ButtonTilMeny" runat="server" OnClick="ButtonTilMeny_Click" style="z-index: 1; left: 219px; top: 14px; " Text="Til meny" /><asp:Button ID="Button1" runat="server" OnClick="Button1_Click" style="z-index: 1; left: 650px; top: 14px; " Text="Button" /><asp:TextBox ID="TextBoxTest" runat="server" style="z-index: 1; left: 459px; top: 18px; "></asp:TextBox><asp:Button ID="ButtonTilLønnstabellA" runat="server" OnClick="ButtonTilLønnstabellA_Click" style="z-index: 1; left: 10px; top: 15px; " Text="Til lønnstabell A" /></div><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:lplandb_SSTConnectionString %>" SelectCommand="SELECT * FROM [Versjoner] ORDER BY [Versjon] DESC" UpdateCommandType="StoredProcedure"></asp:SqlDataSource><asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Ident" DataSourceID="SqlDataSource1" style="z-index: 1; left: 10px; top: 67px; ; height: 133px; width: 995px" OnRowUpdating="GridView1_RowUpdating" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"><Columns><asp:TemplateField HeaderText="Ident"><EditItemTemplate><asp:Label ID="Label1" runat="server" Text='<%# Eval("Ident", "{0:F0}") %>'></asp:Label></EditItemTemplate><ItemTemplate><asp:Label ID="Label11" runat="server" Text='<%# Eval("Ident", "{0:F0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Versjon" SortExpression="Versjon"><EditItemTemplate><asp:TextBox ID="TextBoxVersjon" runat="server" Text='<%# Eval("Versjon", "{0:F0}") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label4" runat="server" Text='<%# Eval("Versjon", "{0:F0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Grunnbelop" SortExpression="Grunnbelop"><EditItemTemplate><asp:TextBox ID="TextBoxGrunnBeløp" runat="server" Text='<%# Eval("Grunnbelop", "{0:f0}") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%# Eval("Grunnbelop", "{0:C0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="oubelop" SortExpression="oubelop"><EditItemTemplate><asp:TextBox ID="TextBoxOUbeløp" runat="server" Text='<%# Eval("oubelop", "{0:f0}") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label2" runat="server" Text='<%# Eval("oubelop", "{0:C0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="ArbeidstimerPrÅr" SortExpression="ArbeidstimerPrÅr"><EditItemTemplate><asp:TextBox ID="TextBoxAbeidstimer" runat="server" Text='<%# Eval("ArbeidstimerPrÅr", "{0:f0}") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label3" runat="server" Text='<%# Eval("ArbeidstimerPrÅr", "{0:F0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="lonnralt_ver" SortExpression="lonnralt_ver"><EditItemTemplate><asp:TextBox ID="TextBoxLonnraltVer" runat="server" Text='<%# Eval("lonnralt_ver", "{0:F0}") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label5" runat="server" Text='<%# Eval("lonnralt_ver", "{0:F0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="lonnramm_ver" SortExpression="lonnramm_ver"><EditItemTemplate><asp:TextBox ID="TextBoxLonnRamVer" runat="server" Text='<%# Eval("lonnramm_ver", "{0:F0}") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label6" runat="server" Text='<%# Eval("lonnramm_ver", "{0:F0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="ltaba_ver" SortExpression="ltaba_ver"><EditItemTemplate><asp:TextBox ID="TextBoxLtabAver" runat="server" Text='<%# Eval("ltaba_ver", "{0:F0}") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label7" runat="server" Text='<%# Eval("ltaba_ver", "{0:F0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="ltabb_ver" SortExpression="ltabb_ver"><EditItemTemplate><asp:TextBox ID="TextBoxLtabBver" runat="server" Text='<%# Eval("ltabb_ver", "{0:F0}") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label8" runat="server" Text='<%# Eval("ltabb_ver", "{0:F0}") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Ferdig" SortExpression="Ferdig"><EditItemTemplate><asp:TextBox ID="TextBoxFerdig" runat="server" Text='<%# Eval("Ferdig") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label9" runat="server" Text='<%# Eval("Ferdig") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:BoundField DataField="DatoEndret" HeaderText="DatoEndret" SortExpression="DatoEndret" /><asp:BoundField DataField="EndretAv" HeaderText="EndretAv" SortExpression="EndretAv" /><asp:TemplateField HeaderText="Kommentar" SortExpression="Kommentar"><EditItemTemplate><asp:TextBox ID="TextBoxKommentar" runat="server" Text='<%# Eval("Kommentar") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label10" runat="server" Text='<%# Eval("Kommentar") %>'></asp:Label></ItemTemplate></asp:TemplateField></Columns></asp:GridView></form></body></html>
Here is my codebehind:
using LønnsplanWeb.App_Code; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace LønnsplanWeb { public partial class Datasheet_versjoner : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Common MyCommon = new Common(); Int32 AdminRoles = MyCommon.GetAdminRoleStatus(); if (AdminRoles > 0) //Current user is administrator { this.GridView1.AutoGenerateEditButton = true; this.GridView1.AutoGenerateDeleteButton = true; } else //An ordinary user, not administrator { this.GridView1.AutoGenerateEditButton = false; this.GridView1.AutoGenerateDeleteButton = false; } } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { string id = GridView1.DataKeys[e.RowIndex]["Ident"].ToString(); string strVersjon = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBoxVersjon")).Text.ToString(); //e.Cancel = true; this.SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure; this.SqlDataSource1.UpdateCommand = "lpsp_VersjonerUpdateTest"; this.SqlDataSource1.UpdateParameters.Add("Ident", TypeCode.Int32, id); this.SqlDataSource1.UpdateParameters.Add("Versjon", TypeCode.String, strVersjon); this.TextBoxTest.Text = this.SqlDataSource1.UpdateParameters.Count.ToString(); //e.Cancel = true; this.SqlDataSource1.Update(); } protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { this.SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure; this.SqlDataSource1.UpdateCommand = "lpsp_VersjonerUpdateTest"; this.SqlDataSource1.UpdateParameters.Add("Ident", TypeCode.Int32, "56"); this.SqlDataSource1.UpdateParameters.Add("Versjon", TypeCode.String, "2020-07"); this.TextBoxTest.Text = this.SqlDataSource1.UpdateParameters.Count.ToString(); //e.Cancel = true; this.SqlDataSource1.Update(); } } }
Tore