Newbie, gridview problem ASP.net 2005

V

verci

Hi
Can anyone help me I'm running Win XP Pro SP2, VS2005 Team, .Net Framework
2.0 and SQL Server2005, I can't delete records using the gridviews
deletecommand, the updatecommand works fine, edit and calcel all works fine
the problem is the delete part, I get the message:

-----------------------------------------------ERROR
MESSAGE----------------------------------------------------------------------------------------
Must declare the scalar variable "@productid".
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Must declare the
scalar variable "@productid".
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Here's my default3.aspx source code so far I've been stuck two days, thanks
and best regards. :(

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default3.aspx.vb"
Inherits="Default3" %>
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$
ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT p.ProductID, p.ProductName, p.CategoryID,
c.CategoryName FROM Products p inner join Categories c on p.CategoryID =
c.CategoryID"

UpdateCommand="Update Products Set ProductID=@ProductID,
ProductName=@ProductName, CategoryID=@CategoryID where ProductID=@ProductID"

DeleteCommand="delete from products where productid=@productid">

</asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$
ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]">

</asp:SqlDataSource>

</div>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333"
GridLines="None" AllowPaging="True">

<Columns>

<asp:CommandField ButtonType="Image" CancelImageUrl="~/Images/Cancel.gif"
EditImageUrl="~/Images/WRITE2.gif"

ShowEditButton="True" UpdateImageUrl="~/Images/Update.gif"
DeleteImageUrl="~/Images/waste-trash.gif" ShowDeleteButton="True" />

<asp:TemplateField SortExpression="ProductID">

<EditItemTemplate>

<asp:Label ID="TextBox1" runat="server" Text='<%# Bind("ProductID")%>'
Visible=false></asp:Label>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label2" runat="server" Text='<%# Bind("ProductID") %>'
Visible=false></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />

<asp:TemplateField HeaderText="CategoryID" SortExpression="CategoryID">

<EditItemTemplate>

<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2"

DataTextField="CategoryName" DataValueField="CategoryID" SelectedValue='<%#
Bind("CategoryID") %>' >

</asp:DropDownList>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label1" runat="server" Text='<%# Bind("CategoryName")
%>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

</Columns>

<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<SelectedRowStyle BackColor="#D1DDF1" ForeColor="#333333" Font-Bold="True"
/>

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center"
/>

<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<AlternatingRowStyle BackColor="White" />

<RowStyle BackColor="#EFF3FB" />

<EditRowStyle BackColor="#2461BF" />

</asp:GridView>

</form>

</body>

</html>
 
B

Bruno Alexandre

you have missed a lot of commands

<asp:GridView ... DataKeyNames="ProductID" ...

and add the DeleteParameters, UpdateParameters and InsertParameters (if you
want to insert) in the DataSource




--

Bruno Alexandre
"a Portuguese in Københav, Danmark"



verci said:
Hi
Can anyone help me I'm running Win XP Pro SP2, VS2005 Team, .Net Framework
2.0 and SQL Server2005, I can't delete records using the gridviews
deletecommand, the updatecommand works fine, edit and calcel all works
fine the problem is the delete part, I get the message:

-----------------------------------------------ERROR
MESSAGE----------------------------------------------------------------------------------------
Must declare the scalar variable "@productid".
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Must declare the
scalar variable "@productid".
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Here's my default3.aspx source code so far I've been stuck two days,
thanks and best regards. :(

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default3.aspx.vb"
Inherits="Default3" %>
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT p.ProductID, p.ProductName, p.CategoryID,
c.CategoryName FROM Products p inner join Categories c on p.CategoryID =
c.CategoryID"

UpdateCommand="Update Products Set ProductID=@ProductID,
ProductName=@ProductName, CategoryID=@CategoryID where
ProductID=@ProductID"

DeleteCommand="delete from products where productid=@productid">

</asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]">

</asp:SqlDataSource>

</div>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333"
GridLines="None" AllowPaging="True">

<Columns>

<asp:CommandField ButtonType="Image" CancelImageUrl="~/Images/Cancel.gif"
EditImageUrl="~/Images/WRITE2.gif"

ShowEditButton="True" UpdateImageUrl="~/Images/Update.gif"
DeleteImageUrl="~/Images/waste-trash.gif" ShowDeleteButton="True" />

<asp:TemplateField SortExpression="ProductID">

<EditItemTemplate>

<asp:Label ID="TextBox1" runat="server" Text='<%# Bind("ProductID")%>'
Visible=false></asp:Label>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label2" runat="server" Text='<%# Bind("ProductID") %>'
Visible=false></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />

<asp:TemplateField HeaderText="CategoryID" SortExpression="CategoryID">

<EditItemTemplate>

<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2"

DataTextField="CategoryName" DataValueField="CategoryID"
SelectedValue='<%# Bind("CategoryID") %>' >

</asp:DropDownList>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label1" runat="server" Text='<%# Bind("CategoryName")
%>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

</Columns>

<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<SelectedRowStyle BackColor="#D1DDF1" ForeColor="#333333" Font-Bold="True"
/>

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center"
/>

<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<AlternatingRowStyle BackColor="White" />

<RowStyle BackColor="#EFF3FB" />

<EditRowStyle BackColor="#2461BF" />

</asp:GridView>

</form>

</body>

</html>
 
B

Bruno Alexandre

--

Bruno Alexandre
"a Portuguese in Københav, Danmark"



verci said:
Hi
Can anyone help me I'm running Win XP Pro SP2, VS2005 Team, .Net Framework
2.0 and SQL Server2005, I can't delete records using the gridviews
deletecommand, the updatecommand works fine, edit and calcel all works
fine the problem is the delete part, I get the message:

-----------------------------------------------ERROR
MESSAGE----------------------------------------------------------------------------------------
Must declare the scalar variable "@productid".
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Must declare the
scalar variable "@productid".
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Here's my default3.aspx source code so far I've been stuck two days,
thanks and best regards. :(

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default3.aspx.vb"
Inherits="Default3" %>
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT p.ProductID, p.ProductName, p.CategoryID,
c.CategoryName FROM Products p inner join Categories c on p.CategoryID =
c.CategoryID"

UpdateCommand="Update Products Set ProductID=@ProductID,
ProductName=@ProductName, CategoryID=@CategoryID where
ProductID=@ProductID"

DeleteCommand="delete from products where productid=@productid">

</asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]">

</asp:SqlDataSource>

</div>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333"
GridLines="None" AllowPaging="True">

<Columns>

<asp:CommandField ButtonType="Image" CancelImageUrl="~/Images/Cancel.gif"
EditImageUrl="~/Images/WRITE2.gif"

ShowEditButton="True" UpdateImageUrl="~/Images/Update.gif"
DeleteImageUrl="~/Images/waste-trash.gif" ShowDeleteButton="True" />

<asp:TemplateField SortExpression="ProductID">

<EditItemTemplate>

<asp:Label ID="TextBox1" runat="server" Text='<%# Bind("ProductID")%>'
Visible=false></asp:Label>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label2" runat="server" Text='<%# Bind("ProductID") %>'
Visible=false></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />

<asp:TemplateField HeaderText="CategoryID" SortExpression="CategoryID">

<EditItemTemplate>

<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2"

DataTextField="CategoryName" DataValueField="CategoryID"
SelectedValue='<%# Bind("CategoryID") %>' >

</asp:DropDownList>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label1" runat="server" Text='<%# Bind("CategoryName")
%>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

</Columns>

<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<SelectedRowStyle BackColor="#D1DDF1" ForeColor="#333333" Font-Bold="True"
/>

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center"
/>

<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<AlternatingRowStyle BackColor="White" />

<RowStyle BackColor="#EFF3FB" />

<EditRowStyle BackColor="#2461BF" />

</asp:GridView>

</form>

</body>

</html>
 
B

Bruno Alexandre

You are missing a lot of commands to perform such task

first you need to especify the DataKeyNames in the GridView itself and them
add the DeleteParameters and UpdateParameters on the DataSource

<asp:GridView DataKeyNames="productID" ...

<DeleteParameters>
<asp:parameter Name="productID" Type="Decimal" />
</DeleteParameters>

<UpdateParameters>
<asp:parameter Name="productID" Type="Decimal" />
<asp:parameter Name="ProductName" Type="Decimal" />
<asp:parameter Name="CategoryID" Type="Decimal" />
</UpdateParameters>

I dont know if your columns are Decimal or not, but change it to the proper
data type

--

Bruno Alexandre
"a Portuguese in Københav, Danmark"



verci said:
Hi
Can anyone help me I'm running Win XP Pro SP2, VS2005 Team, .Net Framework
2.0 and SQL Server2005, I can't delete records using the gridviews
deletecommand, the updatecommand works fine, edit and calcel all works
fine the problem is the delete part, I get the message:

-----------------------------------------------ERROR
MESSAGE----------------------------------------------------------------------------------------
Must declare the scalar variable "@productid".
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Must declare the
scalar variable "@productid".
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Here's my default3.aspx source code so far I've been stuck two days,
thanks and best regards. :(

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default3.aspx.vb"
Inherits="Default3" %>
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT p.ProductID, p.ProductName, p.CategoryID,
c.CategoryName FROM Products p inner join Categories c on p.CategoryID =
c.CategoryID"

UpdateCommand="Update Products Set ProductID=@ProductID,
ProductName=@ProductName, CategoryID=@CategoryID where
ProductID=@ProductID"

DeleteCommand="delete from products where productid=@productid">

</asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]">

</asp:SqlDataSource>

</div>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333"
GridLines="None" AllowPaging="True">

<Columns>

<asp:CommandField ButtonType="Image" CancelImageUrl="~/Images/Cancel.gif"
EditImageUrl="~/Images/WRITE2.gif"

ShowEditButton="True" UpdateImageUrl="~/Images/Update.gif"
DeleteImageUrl="~/Images/waste-trash.gif" ShowDeleteButton="True" />

<asp:TemplateField SortExpression="ProductID">

<EditItemTemplate>

<asp:Label ID="TextBox1" runat="server" Text='<%# Bind("ProductID")%>'
Visible=false></asp:Label>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label2" runat="server" Text='<%# Bind("ProductID") %>'
Visible=false></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />

<asp:TemplateField HeaderText="CategoryID" SortExpression="CategoryID">

<EditItemTemplate>

<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2"

DataTextField="CategoryName" DataValueField="CategoryID"
SelectedValue='<%# Bind("CategoryID") %>' >

</asp:DropDownList>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label1" runat="server" Text='<%# Bind("CategoryName")
%>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

</Columns>

<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<SelectedRowStyle BackColor="#D1DDF1" ForeColor="#333333" Font-Bold="True"
/>

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center"
/>

<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<AlternatingRowStyle BackColor="White" />

<RowStyle BackColor="#EFF3FB" />

<EditRowStyle BackColor="#2461BF" />

</asp:GridView>

</form>

</body>

</html>
 
V

verci

Hey many thanks Bruno!!, that did it. :)


Bruno Alexandre said:
You are missing a lot of commands to perform such task

first you need to especify the DataKeyNames in the GridView itself and
them add the DeleteParameters and UpdateParameters on the DataSource

<asp:GridView DataKeyNames="productID" ...

<DeleteParameters>
<asp:parameter Name="productID" Type="Decimal" />
</DeleteParameters>

<UpdateParameters>
<asp:parameter Name="productID" Type="Decimal" />
<asp:parameter Name="ProductName" Type="Decimal" />
<asp:parameter Name="CategoryID" Type="Decimal" />
</UpdateParameters>

I dont know if your columns are Decimal or not, but change it to the
proper data type

--

Bruno Alexandre
"a Portuguese in Københav, Danmark"



verci said:
Hi
Can anyone help me I'm running Win XP Pro SP2, VS2005 Team, .Net
Framework 2.0 and SQL Server2005, I can't delete records using the
gridviews deletecommand, the updatecommand works fine, edit and calcel
all works fine the problem is the delete part, I get the message:

-----------------------------------------------ERROR
MESSAGE----------------------------------------------------------------------------------------
Must declare the scalar variable "@productid".
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Must declare the
scalar variable "@productid".
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Here's my default3.aspx source code so far I've been stuck two days,
thanks and best regards. :(

<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default3.aspx.vb" Inherits="Default3" %>
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT p.ProductID, p.ProductName, p.CategoryID,
c.CategoryName FROM Products p inner join Categories c on p.CategoryID =
c.CategoryID"

UpdateCommand="Update Products Set ProductID=@ProductID,
ProductName=@ProductName, CategoryID=@CategoryID where
ProductID=@ProductID"

DeleteCommand="delete from products where productid=@productid">

</asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindConnectionString %>"

SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]">

</asp:SqlDataSource>

</div>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333"
GridLines="None" AllowPaging="True">

<Columns>

<asp:CommandField ButtonType="Image" CancelImageUrl="~/Images/Cancel.gif"
EditImageUrl="~/Images/WRITE2.gif"

ShowEditButton="True" UpdateImageUrl="~/Images/Update.gif"
DeleteImageUrl="~/Images/waste-trash.gif" ShowDeleteButton="True" />

<asp:TemplateField SortExpression="ProductID">

<EditItemTemplate>

<asp:Label ID="TextBox1" runat="server" Text='<%# Bind("ProductID")%>'
Visible=false></asp:Label>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label2" runat="server" Text='<%# Bind("ProductID") %>'
Visible=false></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />

<asp:TemplateField HeaderText="CategoryID" SortExpression="CategoryID">

<EditItemTemplate>

<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2"

DataTextField="CategoryName" DataValueField="CategoryID"
SelectedValue='<%# Bind("CategoryID") %>' >

</asp:DropDownList>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label1" runat="server" Text='<%# Bind("CategoryName")
%>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

</Columns>

<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<SelectedRowStyle BackColor="#D1DDF1" ForeColor="#333333"
Font-Bold="True" />

<PagerStyle BackColor="#2461BF" ForeColor="White"
HorizontalAlign="Center" />

<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

<AlternatingRowStyle BackColor="White" />

<RowStyle BackColor="#EFF3FB" />

<EditRowStyle BackColor="#2461BF" />

</asp:GridView>

</form>

</body>

</html>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,533
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top