2015-03-24 58 views
0

我嘗試使用命令行來更新網格視圖數據,但我得到的錯誤等:如何使用存儲過程更新網格視圖中的數據?

過程或函數「UpdateState」預計參數「@StateName」,但未提供。

存儲過程:

CREATE PROCEDURE UpdateState 
    @StateName varchar(30) 
AS 
    update tblState 
    set StateName = @StateName 

Aspx頁:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
     GridView1.EditIndex = e.NewEditIndex; 
     FillStates(); 
} 

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
     int Sid = Convert.ToInt16(GridView1.DataKeys[e.RowIndex].Value); 
     TextBox StateName = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1"); 
     p.Sid = Sid; 
     p.StateName = StateName.Text; 
     p.UpdateState(p); 
     GridView1.EditIndex = -1; 
     FillStates(); 
} 

來源:

public void UpdateState(Property p) 
{ 
     cmd = new SqlCommand("UpdateState", con); 
     cmd.Parameters.AddWithValue("@Sid", p.Sid); 
     cmd.Parameters.AddWithValue("@StateName", p.StateName); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
} 
+0

您的命令應指定其類型: ** cmd.CommandType = System.Data.CommandType.StoredProcedure ** ...也請將正確數量的參數發送到存儲過程 – ymz 2015-03-24 23:55:10

+1

您需要在那個存儲過程中使用WHERE子句過程,除非你想更新整個表。 – Crowcoder 2015-03-25 01:46:26

回答

0

添加命令類型

cmd = new SqlCommand("UpdateState", con); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@Sid", p.Sid); 
    cmd.Parameters.AddWithValue("@StateName", p.StateName); 
    con.Open(); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
相關問題