2008-11-07 68 views
5

Tôi có GridView cho phép chỉnh sửa các giá trị trong mỗi cột, trong mọi hàng, mọi lúc. Người dùng nhập vào tất cả các thay đổi của họ, nhấp vào Lưu một lần và tất cả các thay đổi đều được cam kết.Thêm hàng mới vào GridView mà không cần DataBind

Người dùng cũng phải có thể nhấp vào nút Mới, có hàng mới xuất hiện trong GridView (yep, nó phải hiển thị trong GridView thực), nhập bất kỳ dữ liệu nào họ muốn, nhấp vào Lưu và có tất cả thay đổi vào cơ sở dữ liệu.

Hiện tại. Đây là trường hợp người dùng ném tôi: người dùng đến trang, thực hiện một số thay đổi trên một số hàng hiện có và sau đó cần thêm hàng mới, nhập dữ liệu vào hàng mới, nhấp vào Lưu và có tất cả thay đổi vào cơ sở dữ liệu .

Tuy nhiên, cách duy nhất tôi đã nhìn thấy để thêm hàng trống mới liên quan đến việc khôi phục GridView, điều này có nghĩa là tất cả thay đổi của chúng sẽ bị mất. Điều này rõ ràng là không tốt. Vì vậy, câu hỏi của tôi sẽ là: một số cách tiếp cận để thêm hàng mới, trống, có thể chỉnh sửa vào GridView mà không cần phải rebind GridView là gì?

Điều duy nhất tôi có thể nghĩ là, trên sự kiện nhấp chuột của nút Mới, hút tất cả dữ liệu ra khỏi GridView (bao gồm chỉnh sửa tiềm năng của người dùng), lưu nó vào ViewState (hoặc bất kỳ thứ gì), thêm mới hàng, tái tạo lưới. Điều này, với tôi, có vẻ hơi khó hiểu, nhưng nó sẽ cho phép tôi tắt ViewState trên GridView.

Bất kỳ ý tưởng nào?

Trả lời

3

Chỉ cần rời khỏi đầu tôi có thể nghĩ đến hai lựa chọn. Đầu tiên là lưu trữ các kết quả ban đầu mà bạn đang ràng buộc vào lưới và khi bạn cần thêm một hàng khác, bạn thêm một datarow vào datatabale mà bạn đang ràng buộc và sau đó liên kết nó với lưới. Nếu có những thay đổi trong lưới thì bạn cần phải cập nhật dữ liệu. Khi tất cả thay đổi đã được thực hiện và người dùng nhấp vào nút lưu, bạn có thể lặp qua bảng và cập nhật DB bằng dữ liệu.

Nó có thể trông như thế này

Trang tải

  • Nhận DB dữ liệu và đưa vào một bảng
  • Bind bảng cho lưới điện
  • Store bảng trong một bộ nhớ cache

Khi người dùng yêu cầu một hàng mới

  • Nhận đối tượng dữ liệu được lưu trong bộ nhớ cache.
  • Cập nhật bất kỳ hàng nào đã thay đổi
  • Thêm một Bind hàng rỗng vào lưới

Khi người dùng tiết kiệm lưới

  • Lấy đối tượng lưu trữ.
  • Hãy thiết lập cuối cùng của bản cập nhật
  • Vòng qua hàng và cập nhật DB

Một cách khác để làm điều này là bằng cách tạo lưới điện động nhưng điều này sẽ đòi hỏi nỗ lực nhiều hơn so với nó đáng cho những gì bạn đã mô tả.

0

Bạn có thể tự động thêm hàng mới qua javascript và trên lệnh lưu tìm kiếm các hàng mới được thêm vào. Điều đó khá phổ biến.

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