2013-03-20 7 views
1

Я прочитал массу сайтов на этом. Существует много «примеров», если вы вызываете какой-то код без объяснения того, как он был сгенерирован (например, дизайн или нет), или просто хотите использовать простые команды выбора и обновления.ASp.Net GridView Обновление с использованием хранимой процедуры

У меня есть Gridview. Я заполняю его, используя код из хранимой процедуры. Теперь я хочу редактировать данные. Я ничего не задал в свойствах Gridview через конструкторское представление (источник данных, столбцы и т. Д.). Мой вопрос в том, как я могу установить это, чтобы разрешить редактирование и использовать SP для отправки его обратно в базу данных?

Должен ли я вручную создавать столбцы с кодом, так как я решил не устанавливать свойства в представлении дизайна?

Лучше ли устанавливать свойства в режиме проектирования и идти по этому маршруту? Я начал этот путь, но имел проблемы, когда дело доходило до обновления с помощью SP.

Я предполагаю, что все это делается в дизайнере, и это в кодовой вещи меня смущает.

Я начал добавлять RowEdit, RowCommand и т. Д. В html и C#, но до сих пор не вижу EDIT/CANCEL на веб-странице, когда я запускаю его.

ответ

0

Научитесь использовать объект ObjectDataSource. Это дает вам максимальную свободу в том, как хранить данные, которые вы используете, - вы делегируете выбор, обновление и удаление во внешний класс, где вы просто пишете свой код, который использует ado, linq, hibernate, webservice или что угодно.

Кодирование ваших представлений непосредственно против фиксированной структуры базы данных рано или поздно повредит вам.

+0

Я не считаю, хранимая процедура фиксированной структуры данных .... – user1612851

+0

это, в некотором смысле, что вы не можете легко изменить его структуру или переместить в другую базу данных двигатель. –

+0

Шансы полностью изменить базы данных в проекте небольшие. Вам все равно придется обновлять свой объект. Что-то нужно будет обновить для изменения баз данных. Я стараюсь сделать это как можно проще, так как я новичок в веб-приложениях. – user1612851

0

создать таблицу, как с именем StckDetails enter image description here

после создания процедуры с anme sp_StckDetails1 процедуры ALTER [DBO]. [Sp_StockDetails1] (
@Action VARCHAR (20), @Branch_ID INT = нуль, @Stock_Name VARCHAR (50) = нуль, @Stock_code VARCHAR (20) = NULL, @Qty INT = NULL, @Purchase_Price десятичное (18,0) = NULL, @Sales_Price десятичное (18,0) = NULL , @Order_ID int = null ) как НАЧАЛО УСТАНОВИТЬ НАКОП. если @ Action = 'Обновить' начать обновления StockDetails набор Кол-во = @ Кол-во, Purchase_Price = @ Purchase_Price, Sales_price = @ Sales_Price где Order_ID = @ Order_ID конец Конец

добавьте C# код этикетки lbl_id = GridView2.Rows [e.RowIndex] .FindControl («Label2») в качестве метки; TextBox txt1_qty = GridView2.Rows [e.RowIndex] .FindControl («TextBox7») как TextBox; TextBox txt2_PP = GridView2.Rows [e.RowIndex] .FindControl («TextBox8») как 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 код

'> '> «> '> '> '> '> '> '> '> ........................................ .

попробовать это сформулирует

Смежные вопросы