2010-09-08 54 views
5

Tôi có bảng chứa dữ liệu. Trong mỗi hàng có một hộp kiểm cộng với hộp kiểm để chọn tất cả hộp kiểm tại tiêu đề. Khi kiểm tra các hộp kiểm này, các hàng sửa lỗi sẽ bị xóa khỏi bảng cơ sở dữ liệu.Thêm vào việc đánh dấu vào hộp kiểm ở đầu trang, tất cả các hàng sẽ bị xóa khỏi bảng cơ sở dữ liệu. Làm thế nào tôi có thể đạt được mvc asp.net này.xóa các hàng của bảng khi kiểm tra hộp kiểm

Trả lời

9

Như mọi khi bắt đầu với một mô hình:

public class ProductViewModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

Sau đó, một bộ điều khiển:

public class HomeController : Controller 
{ 
    // TODO: Fetch this from a repository 
    private static List<ProductViewModel> _products = new List<ProductViewModel> 
    { 
     new ProductViewModel { Id = 1, Name = "Product 1" }, 
     new ProductViewModel { Id = 2, Name = "Product 2" }, 
     new ProductViewModel { Id = 3, Name = "Product 3" }, 
     new ProductViewModel { Id = 4, Name = "Product 4" }, 
     new ProductViewModel { Id = 5, Name = "Product 5" }, 
    }; 

    public ActionResult Index() 
    { 
     return View(_products); 
    } 

    [HttpPost] 
    public ActionResult Delete(IEnumerable<int> productIdsToDelete) 
    { 
     // TODO: Perform the delete from a repository 
     _products.RemoveAll(p => productIdsToDelete.Contains(p.Id)); 
     return RedirectToAction("index"); 
    } 
} 

Và cuối cùng là Index.aspx xem:

<% using (Html.BeginForm("delete", "home", FormMethod.Post)) { %> 

    <table> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Select</th> 
      </tr> 
     </thead> 
     <tbody> 
      <%= Html.EditorForModel()%> 
     </tbody> 
    </table> 

    <input type="submit" value="Delete selected products" /> 

<% } %> 

Và mẫu biên tập sản phẩm (~/Views/Home/EditorTemplates/ProductViewModel.ascx) :

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ToDD.Controllers.ProductViewModel>" %> 
<tr> 
    <td> 
     <%: Model.Name %> 
    </td> 
    <td> 
     <input type="checkbox" name="productIdsToDelete" value="<%: Model.Id %>" /> 
    </td> 
</tr> 
+0

Cảm ơn Darin, nó đã hoạt động. –

+0

Tôi không hiểu giá trị của hộp kiểm được xác định như thế nào, bạn có thể giải thích không? Tôi khá mới với MVC và cố gắng tìm ra nó. Cảm ơn. – Shimmy

0

Tôi sẽ sử dụng AJAX. Khi thay đổi trạng thái đã chọn, tôi sẽ gửi yêu cầu xóa tất cả các ID đã chọn và làm mới dữ liệu bảng.

+0

có nghĩa là nếu kiểm tra trên hộp kiểm, cuộc gọi ajax sẽ được thực hiện và bảng sẽ được giới thiệu sau đó lại kiểm tra lại hộp kiểm khác cùng điều xảy ra. –

+0

@andrew Sullivan yes – thelost

0

Sử dụng jQuery, một số thư viện javascript khác hoặc chỉ cần mã tay một yêu cầu AJAX trên hộp kiểm. Sau đó thay đổi DOM thành công.

Sử dụng jQuery bạn có thể làm một cái gì đó như:

<table> 
    <tr> 
     <td><input type="checkbox" class="check" id="1" /></td> 
    </tr> 
    <tr> 
     <td><input type="checkbox" class="check" id="2" /></td> 
    </tr> 
    <tr> 
     <td><input type="checkbox" class="check" id="3" /></td> 
    </tr> 
</table> 


$('.check').click(function() { 
    var tableRow = $(this).parent().parent(); 
    var id = $(this).attr('id'); 
    $.ajax({ 
     url: 'http://www.YOURDOMAIN.com/Controller/Action/' + id, 
     success: function(data) { 
      $(tableRow).remove(); 
     } 
    }); 
)}; 

Đây là thực hiện rất cơ bản, bạn có thể ăn mặc nó lên với một số hình ảnh động trong việc loại bỏ các hàng. Bạn cũng cần truyền dữ liệu và trả về dữ liệu với một số xử lý lỗi. Hãy xem tại đây để biết số jQuery AJAX tutorial.

+0

đây là asp.net mvc. Làm thế nào tôi nên vượt qua thông tin để điều khiển, hộp kiểm nào được chọn. –

+0

có thể có ID, tôi sẽ đăng chỉnh sửa với tùy chọn. Xem URL và ID mới trên hộp kiểm. Tuy nhiên, tôi sẽ xem xét một dịch vụ web JSON, nhẹ hơn và dễ dàng hơn để làm. Thêm vào đó nó hoạt động tuyệt vời với MVC vì có một loại hành động 'JSONRESULT'. –

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