2013-04-20 75 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; 
      } 
相關問題