2011-12-09 24 views
6

Trong trang ASP.NET của tôi, tôi đang sử dụng GridView để xem dữ liệu (Giá hàng & giá của chúng). Hiện tại, người dùng có thể chỉnh sửa dữ liệu (giá) trong hàng lưới theo hàng. (Click -> "Chỉnh sửa" liên kết, thay đổi các giá trị sau đó "Cập nhật"). Đây là ROW của ROW. Có thể mở tất cả các hàng trong chế độ Chỉnh sửa & sử dụng một nút đơn (ví dụ: Gửi) để cập nhật tất cả dữ liệu một lần không?ASP GridView Tất cả các hàng trong chế độ chỉnh sửa

Trả lời

5

Nếu bạn không cần chế độ chỉ đọc, trong trường hợp đó bạn có thể đặt hộp nhập liệu (hộp văn bản, danh sách thả xuống, v.v.) trong mục ItemTEmplate và liên kết chúng với dữ liệu hiện có.

Tiếp theo, đặt nút gửi ở trên/dưới của GridView và nút xử lý Click sự kiện và lặp qua dữ liệu mục GridView và lưu tất cả cơ sở dữ liệu.

Tôi sẽ đăng khối mã nếu bạn cần. Cảm ơn vì đã dành thời gian cho tôi.

+0

Tôi gặp vấn đề tương tự đối với chế độ xem lưới của mình. Bạn có thể đăng mã cho sự kiện nhấp vào nút không? – developthestars

0

Và bạn sẽ có quyền kiểm soát tốt hơn về việc bạn thực hiện bằng cách sử dụng listview thay vì chế độ xem lưới.

Thực tiễn tốt nhất của tôi là sử dụng chế độ xem danh sách và kiểm soát người dùng web tùy chỉnh cho loại sự cố này.

Nếu bạn điền vào chế độ xem danh sách với điều khiển người dùng, bạn sẽ dễ dàng quản lý phương thức lưu, chỉ cần lặp lại trên các mục listview, tìm điều khiển và gọi phương thức Save() cho từng mục.

0

Tôi biết rằng câu hỏi này đã được trả lời nhưng đây là mã cho vòng lặp thông qua GridView nhận dữ liệu và lưu trữ nó trong cơ sở dữ liệu:

Sử dụng thư viện:

  • sử dụng System.Data ;
  • sử dụng System.Data.SqlClient;
  • bằng System.Web.Configuration;
  • sử dụng System.Data.Odbc;

Mã Đằng sau:

// this is a variable that have the Query or SQL Commands. 
string DataBaseQuery = "UPDATE [table] SET [variable2] = @variable2, [variable3] = @variable3) WHERE [variable1] = @variable1"; 

//Click Event from a LinkButton. 
protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    //"ConnectionString" its the string connection for your DataBase (often get from the WebConfig File or a DataSource element. 
    using (SqlConnection connection = new SqlConnection(ConnectionString)) 
    { 
    //this is for open the database using the string connection. 
    connection.Open(); 

    //this is the algorithm for going through the entire GridView. 
    for (int i = 0; i < GridView1.Rows.Count; i++) 
    { 
     //"DataBaseQuery" it's a string variable that have the Query or SQL Commands. 
     SqlCommand cmd = new SqlCommand(DataBaseQuery, conexion); 

     //this case it's for obtain the text variable of the first column of the gridview (in my case it was the ID of the register). 
     cmd.Parameters.AddWithValue("@variable1", ((Label)GridView1.Rows[i].Cells[0].FindControl("Label1")).Text.ToString()); 

     //this case it's for obtain the selected value of a DropDownList that were in the 14 th column) 
     cmd.Parameters.AddWithValue("@variable2", ((DropDownList)GridView1.Rows[i].Cells[15].FindControl("DropDownlist2")).SelectedValue.ToString()); 

     //this command it's for obtain the text of a textbox that is in the 15 th column of the gridview. 
     cmd.Parameters.AddWithValue("@variable3", ((TextBox)GridView1.Rows[i].Cells[16].FindControl("TextBox17")).Text.ToString()); 

     cmd.ExecuteNonQuery(); 
    } 

    //after going through all the gridview you have to close the connection to the DataBase. 
    connection.Close(); 
    } 
} 

Tất nhiên bạn phải điều chỉnh mã để trường hợp cụ thể của bạn, nhưng nó rất dễ dàng. Trong đoạn mã này bạn có ví dụ để lấy các giá trị cho các đối tượng khác như labes, textbox và dropdownlist trong GridView.

Tôi phải chịu đựng rất nhiều thứ để chạy mã này (tôi không lập trình tốt) nhưng tôi rất sẵn lòng trợ giúp.

LƯU Ý: Để đếm các cột của chế độ xem lưới, bạn phải bắt đầu ở số không. NOTE2: Xin lỗi vì tiếng Anh xấu của tôi bằng cách này ... Đó không phải là ngôn ngữ tự nhiên của tôi.

Các vấn đề liên quan