该页面功能是:首先提供一个GridView查看商品列表,但是提供DetailsView编辑具体的商品和删除。删除没有问题,但是编辑后提示:“为过程或函数 修改商品存储过程 指定了过多的参数”,但是我提供的参数并没有多提供啊!
前台代码:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="商品管理2.aspx.cs" Inherits="汇通玩具网站.admin.商城.商品管理2" %><%@ Register Assembly="CuteEditor" Namespace="CuteEditor" TagPrefix="CE" %><!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>商品管理</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:汇通玩具网站ConnectionString %>" 
            
            SelectCommand="SELECT 商品.商品编号, 商品.商品名称, 商品.商品规格, 商品.商品面料, 商品.商品A价, 商品.商品B价, 商品.是否精品, 商品.是否特价商品, 商品.商品库存, 商品类别.商品类别名称, 商品.商品小图地址, 商品.商品大图地址, 商品.商品中图地址, 商品.商品添加时间, 商品.商品添加IP FROM 商品 INNER JOIN 商品类别 ON 商品.商品类别编号 = 商品类别.商品类别编号"></asp:SqlDataSource>
        <br />
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
            AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="商品编号" 
            DataSourceID="SqlDataSource1" 
            onselectedindexchanged="GridView1_SelectedIndexChanged" 
            onrowediting="GridView1_RowEditing">
            <Columns>
                <asp:CommandField SelectText="查看详细信息" ShowSelectButton="True" />
                <asp:BoundField DataField="商品编号" HeaderText="商品编号" InsertVisible="False" 
                    ReadOnly="True" SortExpression="商品编号" />
                <asp:ImageField DataImageUrlField="商品小图地址" HeaderText="商品小图">
                    <ControlStyle Height="100px" Width="100px" />
                </asp:ImageField>
                <asp:BoundField DataField="商品名称" HeaderText="商品名称" SortExpression="商品名称" />
                <asp:BoundField DataField="商品类别名称" HeaderText="商品类别名称" 
                    SortExpression="商品类别名称" />
                <asp:BoundField DataField="商品规格" HeaderText="商品规格" SortExpression="商品规格" />
                <asp:BoundField DataField="商品面料" HeaderText="商品面料" SortExpression="商品面料" />
                <asp:BoundField DataField="商品A价" HeaderText="商品A价" SortExpression="商品A价" />
                <asp:BoundField DataField="商品B价" HeaderText="商品B价" SortExpression="商品B价" />
                <asp:CheckBoxField DataField="是否精品" HeaderText="是否精品" SortExpression="是否精品" />
                <asp:CheckBoxField DataField="是否特价商品" HeaderText="是否特价商品" 
                    SortExpression="是否特价商品" />
                <asp:BoundField DataField="商品库存" HeaderText="商品库存" SortExpression="商品库存" />
                <asp:BoundField DataField="商品添加时间" HeaderText="商品添加时间" 
                    SortExpression="商品添加时间" />
                <asp:BoundField DataField="商品添加IP" HeaderText="商品添加IP" 
                    SortExpression="商品添加IP" />
            </Columns>
            <EmptyDataTemplate>
                暂时没有商品
            </EmptyDataTemplate>
        </asp:GridView>
        <br />
        <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
            DataKeyNames="商品编号" DataSourceID="SqlDataSource2" Height="50px" 
            Width="1047px" onitemupdating="DetailsView1_ItemUpdating">
            <CommandRowStyle Width="30%" />
            <Fields>
                <asp:BoundField DataField="商品编号" HeaderText="商品编号" InsertVisible="False" 
                    ReadOnly="True" SortExpression="商品编号" />
                <asp:BoundField DataField="商品名称" HeaderText="商品名称" SortExpression="商品名称" />
                 <asp:TemplateField HeaderText="商品小图">
                    <EditItemTemplate>
                        <asp:FileUpload ID="商品小图上传" runat="server" />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Image ID="商品小图" ImageUrl='<%#Bind("商品小图地址")%>' Width="100px" Height="100px" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                 <asp:TemplateField HeaderText="商品大图">
                    <EditItemTemplate>
                        <asp:FileUpload ID="商品大图上传" runat="server" />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Image ID="商品大图" ImageUrl='<%#Bind("商品大图地址")%>' Width="100px" Height="100px" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                 <asp:TemplateField HeaderText="商品中图">
                    <EditItemTemplate>
                        <asp:FileUpload ID="商品中图上传" runat="server" />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Image ID="商品中图" ImageUrl='<%#Bind("商品中图地址")%>' Width="100px" Height="100px" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="商品规格" HeaderText="商品规格" SortExpression="商品规格" />
                <asp:BoundField DataField="商品面料" HeaderText="商品面料" SortExpression="商品面料" />
                <asp:BoundField DataField="商品A价" HeaderText="商品A价" SortExpression="商品A价" />
                <asp:BoundField DataField="商品B价" HeaderText="商品B价" SortExpression="商品B价" />
                <asp:TemplateField HeaderText="商品类别">
                    <EditItemTemplate>
                        <asp:DropDownList ID="商品分类" runat="server" DataSourceID="SqlDataSource3" SelectedValue='<%# Bind("商品类别编号") %>' DataTextField="商品类别名称" DataValueField="商品类别编号"></asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="商品类别名称" runat="server" Text='<%#Bind("商品类别名称")%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                   <asp:TemplateField HeaderText="商品添加时间">
                      <EditItemTemplate>
                         <asp:TextBox ID="商品添加时间" Text='<%#DateTime.Now%> ' runat="server"></asp:TextBox>
                      </EditItemTemplate>
                     <ItemTemplate>
                        <asp:Label ID="商品添加时间" runat="server" Text='<%#Bind("商品添加时间")%>'></asp:Label>
                    </ItemTemplate>
                   </asp:TemplateField>
                <asp:BoundField DataField="商品添加IP" HeaderText="商品添加IP" 
                    SortExpression="商品添加IP" />
                <asp:CheckBoxField DataField="是否精品" HeaderText="是否精品" SortExpression="是否精品" />
                <asp:TemplateField HeaderText="商品详细说明">
                    <EditItemTemplate>
                        <CE:Editor ID="商品详细说明" AutoConfigure="Simple" Text='<%#Bind("商品详细说明")%>' runat="server">
                        </CE:Editor>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="商品详细说明" runat="server" Text='<%#Bind("商品详细说明")%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:CheckBoxField DataField="是否特价商品" HeaderText="是否特价商品" 
                    SortExpression="是否特价商品" />
                <asp:BoundField DataField="商品库存" HeaderText="商品库存" SortExpression="商品库存" />
                <asp:CommandField ButtonType="Button" HeaderText="编辑、更新" ShowEditButton="True" 
                    ShowHeader="True" ShowDeleteButton="True" />
            </Fields>
        </asp:DetailsView>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConnectionString="<%$ ConnectionStrings:汇通玩具网站ConnectionString %>" 
            
            SelectCommand="SELECT DISTINCT * FROM [商品] inner JOIN [商品类别] ON 商品.商品类别编号=商品类别.商品类别编号 WHERE ([商品编号] = @商品编号) order by 商品.商品添加时间 desc " 
            DeleteCommand="删除商品存储过程" DeleteCommandType="StoredProcedure" 
            UpdateCommand="修改商品存储过程" UpdateCommandType="StoredProcedure">
            <SelectParameters>
                <asp:ControlParameter ControlID="GridView1" Name="商品编号" 
                    PropertyName="SelectedValue" Type="Int32" />
            </SelectParameters>
            <DeleteParameters>
                <asp:ControlParameter ControlID="GridView1" Name="商品编号" 
                    PropertyName="SelectedValue" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:ControlParameter ControlID="GridView1" Name="商品编号" 
                    PropertyName="SelectedValue" Type="Int32" />
                <asp:Parameter Name="商品名称" Type="String" />
                <asp:Parameter Name="商品小图地址" Type="String" />
                <asp:Parameter Name="商品大图地址" Type="String" />
                <asp:Parameter Name="商品中图地址" Type="String" />
                <asp:Parameter Name="商品规格" Type="String" />
                <asp:Parameter Name="商品面料" Type="String" />
                <asp:Parameter Name="商品A价" Type="Decimal" />
                <asp:Parameter Name="商品B价" Type="Decimal" />
                <asp:Parameter Name="商品类别编号" Type="Int32" />
                <asp:Parameter Name="是否精品" Type="Boolean" />
                <asp:Parameter Name="商品详细说明" Type="String" />
                <asp:Parameter Name="是否特价商品" Type="Boolean" />
                <asp:Parameter Name="商品库存" Type="Int32" />
            </UpdateParameters>
        </asp:SqlDataSource>
        <br />
        <br />
            <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
        ConnectionString="<%$ ConnectionStrings:汇通玩具网站ConnectionString %>" 
        SelectCommand="返回具有层次的商品类别" SelectCommandType="StoredProcedure">
    </asp:SqlDataSource>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br />
    
    </div>
    </form>
</body>
</html>
<br/>

解决方案 »

  1.   

    后台代码using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using CuteEditor;
    using CuteEditor.ImageEditor;
    using CuteEditorDemo;
    using NetSpell.SpellChecker;namespace 汇通玩具网站.admin.商城
    {
        public partial class 商品管理2 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {        }        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                GridView1.Visible = false;
                DetailsView1.Visible = true;
            }        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
            {
                
            }        protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
            {
                //SqlDataSource2.UpdateParameters.Clear();            FileUpload 商品小图 = (FileUpload)DetailsView1.FindControl("商品小图上传");            if (商品小图.HasFile)
                {
                    string datetime = DateTime.Now.Date.ToString("yyyyMMdd");
                    string time = DateTime.Now.ToShortTimeString().Replace(":", "");
                    string 新文件名 = datetime + time + DateTime.Now.Millisecond.ToString();
                    string 文件名 = 商品小图.FileName;
                    string 文件大小 = 商品小图.PostedFile.ContentLength.ToString();
                    string 文件名后缀 = 文件名.Substring(文件名.LastIndexOf(".") + 1).ToLower();                string 小图上传完整路径 = Server.MapPath("上传图片/小图/") + 新文件名 + @"." + 文件名后缀;
                    商品小图.SaveAs(小图上传完整路径);
                    SqlDataSource2.UpdateParameters["商品小图地址"].DefaultValue = "上传图片/小图/" + 新文件名 + @"." + 文件名后缀;            }
                else
                {
                    
                    SqlDataSource2.UpdateParameters["商品小图地址"].DefaultValue = "11";
                }            FileUpload 商品大图 = (FileUpload)DetailsView1.FindControl("商品大图上传");            if (商品大图.HasFile)
                {
                    string datetime = DateTime.Now.Date.ToString("yyyyMMdd");
                    string time = DateTime.Now.ToShortTimeString().Replace(":", "");
                    string 新文件名 = datetime + time + DateTime.Now.Millisecond.ToString();
                    string 文件名 = 商品大图.FileName;
                    string 文件大小 = 商品大图.PostedFile.ContentLength.ToString();
                    string 文件名后缀 = 文件名.Substring(文件名.LastIndexOf(".") + 1).ToLower();                string 大图上传完整路径 = Server.MapPath("上传图片/大图/") + 新文件名 + @"." + 文件名后缀;
                    商品大图.SaveAs(大图上传完整路径);
                    SqlDataSource2.UpdateParameters["商品大图地址"].DefaultValue = "上传图片/大图/" + 新文件名 + @"." + 文件名后缀;
                }
                else
                {
                    SqlDataSource2.UpdateParameters["商品大图地址"].DefaultValue = "22";
                }            FileUpload 商品中图 = (FileUpload)DetailsView1.FindControl("商品中图上传");            if (商品中图.HasFile)
                {
                    string datetime = DateTime.Now.Date.ToString("yyyyMMdd");
                    string time = DateTime.Now.ToShortTimeString().Replace(":", "");
                    string 新文件名 = datetime + time + DateTime.Now.Millisecond.ToString();
                    string 文件名 = 商品中图.FileName;
                    string 文件大小 = 商品中图.PostedFile.ContentLength.ToString();
                    string 文件名后缀 = 文件名.Substring(文件名.LastIndexOf(".") + 1).ToLower();                string 中图上传完整路径 = Server.MapPath("上传图片/中图/") + 新文件名 + @"." + 文件名后缀;
                    商品中图.SaveAs(中图上传完整路径);
                    SqlDataSource2.UpdateParameters["商品中图地址"].DefaultValue = "上传图片/中图/" + 新文件名 + @"." + 文件名后缀;
                }
                else
                {
                    SqlDataSource2.UpdateParameters["商品中图地址"].DefaultValue = "33";
                }            Label1.Text = SqlDataSource2.UpdateParameters["商品编号"].DefaultValue;            DetailsView1.Visible = false;
                GridView1.DataBind();
                GridView1.Visible = true;        }
        }
    }
      

  2.   

    该页面功能是:首先提供一个GridView查看商品列表,但是提供DetailsView编辑具体的商品和删除。删除没有问题,但是编辑后提示:“为过程或函数 修改商品存储过程 指定了过多的参数”,但是我提供的参数并没有多提供啊!存储过程:
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go-- =============================================
    -- Author: <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description: <Description,,>
    -- =============================================
    ALTER PROCEDURE [dbo].[修改商品存储过程]
    -- Add the parameters for the stored procedure here
    @商品编号 int,
    @商品名称 nvarchar(255),
    @商品小图地址 nvarchar(255),
    @商品大图地址 nvarchar(255),
    @商品中图地址 nvarchar(255),
    @商品规格 nvarchar(255),
    @商品面料 nvarchar(255),
    @商品A价 money,
    @商品B价 money,
    @商品类别编号 int,
    @是否精品 bit,
    @商品详细说明 varchar(8000),
    @是否特价商品 bit,
    @商品库存 int
    as
    BEGin
        declare  @sql varchar(8000)
        set @sql= 'UPdate 商品 set 商品名称='''+@商品名称+''',商品规格='''+@商品规格+''',商品面料='''+@商品面料+''',商品A价='+LTRIM(@商品A价)+',商品B价='+LTRIM(@商品B价)+',商品类别编号='+LTRIM(@商品类别编号)+',是否精品='+LTRIM(@是否精品)+',商品详细说明='+@商品详细说明+',是否特价商品='+LTRIM(@是否特价商品)+',商品库存='+LTRIM(@商品库存)
        if(@商品小图地址 <>'') set @sql=@sql+',商品小图地址='''+ @商品小图地址+''''
        if(@商品大图地址 <>'') set @sql=@sql+',商品大图地址='''+ @商品大图地址+''''
    if(@商品中图地址 <>'') set @sql=@sql+',商品中图地址='''+ @商品中图地址+''''
        set @sql=@sql+' where 商品编号='+LTRIM(@商品编号)
        exec(@sql)
    end
      

  3.   

    存储过程参数与使用UpdateParameters的参数不一致
     @商品编号
      

  4.   

    <asp:TemplateField HeaderText="商品添加时间">
                          <EditItemTemplate>
                             <asp:TextBox ID="商品添加时间" Text='<%#DateTime.Now%> ' runat="server"></asp:TextBox>
                          </EditItemTemplate>
                         <ItemTemplate>
                            <asp:Label ID="商品添加时间" runat="server" Text='<%#Bind("商品添加时间")%>'></asp:Label>
                        </ItemTemplate>
                       </asp:TemplateField>
                    <asp:BoundField DataField="商品添加IP" HeaderText="商品添加IP" 
                        SortExpression="商品添加IP" />因为有了这个,要在存储过程里面加上这个参数。