2013-04-20 79 views
0

我正在使用GridView并启用编辑和更新,并使用UpdateCommand中的UpdateCommand来更新数据。但每当我尝试更新记录,我得到当我使用SqlDataSource的UpdateCommand时,函数或过程指定的参数太多

函数或过程有太多的参数指定的例外

代码:

using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 

public partial class Manager_UnApprovedActivites : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     string id = GridView1.DataKeys[e.RowIndex].Value.ToString(); 
     string Appproval =  ((CheckBox)GridView1.Rows[e.RowIndex].Cells[9].Controls[0]).Text; 
     SqlDataSource1.UpdateParameters["id"].DefaultValue = id.ToString(); 
     SqlDataSource1.UpdateParameters["approval"].DefaultValue = Appproval.ToString(); 
     SqlDataSource1.Update(); 
    } 
} 

ASP.net:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UnApprovedActivites.aspx.cs" Inherits="Manager_UnApprovedActivites" %> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title></title> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
     <div> 
     </div> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
      DataKeyNames="AcitivityId" DataSourceID="SqlDataSource1" 
      Height="273px" Width="976px" AutoGenerateEditButton ="True"> 
      <Columns> 
      <asp:BoundField DataField="AcitivityId" HeaderText="AcitivityId" InsertVisible="False" ReadOnly="True" SortExpression="AcitivityId" /> 
      <asp:BoundField DataField="ActiviityName" HeaderText="ActiviityName" SortExpression="ActiviityName" /> 
      <asp:BoundField DataField="ActivityLocation" HeaderText="ActivityLocation" SortExpression="ActivityLocation" /> 
      <asp:BoundField DataField="ActivityStartDate" HeaderText="ActivityStartDate" SortExpression="ActivityStartDate" /> 
      <asp:BoundField DataField="ActivityDueDate" HeaderText="ActivityDueDate" SortExpression="ActivityDueDate" /> 
      <asp:BoundField DataField="ActivityDescription" HeaderText="ActivityDescription" SortExpression="ActivityDescription" /> 
      <asp:BoundField DataField="ActvityTypeId" HeaderText="ActvityTypeId" SortExpression="ActvityTypeId" /> 
      <asp:BoundField DataField="BarchId" HeaderText="BarchId" SortExpression="BarchId" /> 
      <asp:CheckBoxField DataField="Approval(Authority)" HeaderText="Approval(Authority)" SortExpression="Approval(Authority)" /> 
      <asp:CheckBoxField DataField="ApprovalManager" HeaderText="ApprovalManager" SortExpression="ApprovalManager" /> 
      <asp:BoundField DataField="DateAdded" HeaderText="DateAdded" SortExpression="DateAdded" /> 
      </Columns> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WCA DatabaseConnectionString2 %>" 
      SelectCommand="SELECT * FROM [Activities]" 
      UpdateCommand="ApproveActivity" 
      UpdateCommandType="StoredProcedure"> 
      <UpdateParameters> 
        <asp:Parameter Name="id" Type="Int64" /> 
        <asp:Parameter Name="approval" Type="Boolean" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 
    </form> 
    </body> 
</html> 
+0

http://forums.asp.net/t/1000526.aspx/1问到:_make确保您有相同paramList声明在部分作为SP的paramList_。 – publicgk 2013-04-20 10:19:20

+0

“ApproveActivity”存储过程是什么样的?需要什么参数? 。 – 2013-04-20 10:21:23

+0

为ApprvedActivity ID BIGINT, 审批位 作为 UPDATE [WCA数据库] [DBO]代码[活动] SET ApprovalManager =批准 WHERE AcitivityId = ID – Scarnet 2013-04-20 10:48:40

回答

0

以下行:

string Appproval =  ((CheckBox)GridView1.Rows[e.RowIndex].Cells[9].Controls[0]).Text; 

返回复选框文本不复选框值,而不是使用这个

CheckBox chb= ((CheckBox)GridView1.Rows[e.RowIndex].Cells[9].Controls[0]);    
if (chb != null) 
      { 
       SqlDataSource1.UpdateParameters["approval"].DefaultValue =chb.Checked; 
      } 
相关问题