2013-03-20 79 views
1

我已经阅读了大量的网站。如果你调用一些代码而没有解释它是如何生成的(例如设计视图或类型化)或者只是想使用简单的选择和更新语句,那么有很多“示例”。ASp.Net GridView使用存储过程更新

我有一个GridView。我使用存储过程中的代码填充它。现在我想编辑数据。通过设计视图(数据源,列等),我没有在Gridview的属性中设置任何设置。我的问题是,如何设置它以允许编辑并使用SP将其发送回数据库?

因为我选择不在设计视图中设置属性,现在是否必须手动创建带代码的列?

在设计视图中设置属性并转到该路线会更好吗?我是以这种方式开始的,但是在使用SP进行更新时遇到问题。

我想整个做在设计师vs做它在代码的事情让我感到困惑。

我开始将RowEdit,RowCommand等添加到html和c#中,但是当我运行它时,仍然看不到网页上的EDIT/CANCEL。

回答

0

学习使用ObjectDataSource。它使您能够最大限度地自由选择存储数据的方式 - 将选择,更新和删除委派给外部类,在那里您只需编写使用ado,linq,hibernate,webservice或任何其他类的代码。

直接针对固定数据库结构编码您的视图会迟早会伤害您。

+0

我不认为一个存储过程固定的数据结构.... – user1612851 2013-03-20 21:56:15

+0

它,在你不能轻易改变其结构或移动到另一个数据库中的意义发动机。 – 2013-03-20 21:57:24

+0

在一个项目中完全改变数据库的可能性很小。你仍然需要更新你的对象。有些事情将不得不更新以更改数据库。我尝试尽可能简单地做到这一点,因为我是Web应用程序的新手。 – user1612851 2013-03-21 15:36:30

0

创建表等与名称StckDetails enter image description here

后创建具有ANME sp_StckDetails1 ALTER过程[DBO]过程。[sp_StockDetails1] (
@Action VARCHAR(20), @Branch_ID INT = NULL, @Stock_Name VARCHAR(50)=零, @Stock_code VARCHAR(20)=零, @Qty INT =无效, @Purchase_Price十进制(18,0)=零, @Sales_Price十进制(18,0)=空, @Order_ID int = null ) as BEGIN SET NOCOUNT ON; 如果@动作= '更新' 开始 更新StockDetails设定数量= @数量,Purchase_Price = @ Purchase_Price,Sales_price = @ Sales_Price其中Order_ID上= @ Order_ID上 端 结束

然后添加C#代码是 标签lbl_id = GridView2.Rows [e.RowIndex] .FindControl(“Label2”)作为Label; TextBox txt1_qty = GridView2.Rows [e.RowIndex] .FindControl(“TextBox7”)as TextBox; TextBox txt2_PP = GridView2.Rows [e.RowIndex] .FindControl(“TextBox8”)as TextBox; TextBox txt3_sp = GridView2.Rows [e.RowIndex]。FindControl(“TextBox9”)作为TextBox;

 SqlCommand cmd = new SqlCommand("sp_StockDetails1", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@Action", "Update"); 
     cmd.Parameters.AddWithValue("@Order_ID", SqlDbType.Int).Value = Convert.ToInt32(lbl_id.Text); 
     cmd.Parameters.AddWithValue("@Qty", SqlDbType.Int).Value = Convert.ToInt32(txt1_qty.Text); 
     cmd.Parameters.AddWithValue("@Purchase_Price", SqlDbType.Decimal).Value = Convert.ToDecimal(txt2_PP.Text); 
     cmd.Parameters.AddWithValue("@Sales_Price", SqlDbType.Decimal).Value = Convert.ToDecimal(txt3_sp.Text); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

     GridView2.EditIndex = -1; 
     fillgrid2(); 

的GridView DESIN代码的aspx代码

'> '> “> '> '> '> '> '> '> '> ........................................ 。

尝试它,它就会字