我有包含數據的表。在每一行中都有一個複選框和一個複選框,用於選擇標題中的所有複選框。 選中此複選框後,相應的行將從數據庫table.Plus中刪除,在chiecking標題中的複選框時,所有行都將從數據庫表中刪除。如何才能實現此asp.net mvc。刪除複選框檢查表的行
回答
像往常一樣與模型開始:
public class ProductViewModel
{
public int Id { get; set; }
public string Name { get; set; }
}
然後控制器:
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");
}
}
最後的Index.aspx
觀點:
<% 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" />
<% } %>
而且產品編輯模板(~/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>
我會使用AJAX。在更改檢查狀態時,我會提交一個請求來刪除所有選定的ID並刷新表格數據。
意味着如果在檢查複選框時,將會發出ajax調用並且表將被重新調用,然後再次檢查其他複選框時會發生同樣的事情。 – 2010-09-08 06:53:55
@andrew Sullivan yes – thelost 2010-09-08 07:04:12
使用jQuery
,一些其他的JavaScript庫,或只是手動檢查複選框的AJAX請求代碼。然後在成功時更改DOM
。
使用jQuery,你可以這樣做:
<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();
}
});
)};
這是非常基本的實現,你可以在去除該行的一些動畫打扮起來。您還需要傳遞數據並返回一些錯誤處理的數據。點擊這裏查看jQuery AJAX tutorial。
這是asp.net mvc。我應該如何將信息傳遞給控制器,選中哪個複選框。 – 2010-09-08 06:55:18
可能帶有ID,我會用選項發佈一個編輯。在複選框上查看新的URL和ID。然而,我會研究一個JSON網絡服務,更輕,更容易。加上它與MVC很好地工作,因爲有一個'JSONRESULT'動作類型。 – 2010-09-08 07:11:09
- 1. 風格在Firefox中的複選框 - 刪除檢查和邊框
- 2. 刪除複選框中的複選框
- 3. 當我有複選框檢查如何從表視圖中刪除行?
- 4. 複選框刪除
- 5. 如何刪除條件檢查點擊複選框上的選定行
- 6. C#列表查看與複選框,多選行時檢查自動複選框
- 7. 刪除對應於所選複選框的表中的行點擊刪除
- 8. 如何刪除複選框中的行?
- 9. 使用複選框的值刪除行
- 10. 刪除活動行中的複選框並刪除整行
- 11. Mongoid update_attributes複選框不刪除未經檢查的值
- 12. 刪除啓用了複選框的列表框中的項目。通過檢查你想刪除的文件
- 13. 如何在刪除一行之前再次檢查是否選中複選框
- 14. 如何'檢查'列表中的所有複選框'檢查'單個複選框?
- 15. 檢查複選框
- 16. 如何刪除當使用jquery檢查複選框時
- 17. 如何在檢查後刪除一個複選框
- 18. 複選框刪除項目後自動檢查項目
- 19. jQuery - 刪除複選框時沒有檢查href屬性
- 20. 使用複選框來檢查哪一列將被刪除
- 21. 不能全部刪除如果複選框全部是檢查
- 22. 使用複選框標記行刪除
- 23. 通過複選框刪除多行
- 24. 複選框刪除幾個作業/行
- 25. 使用複選框值刪除行
- 26. 獲取複選框以自行刪除
- 27. PHP刪除多行與複選框
- 28. PHP用複選框刪除多行
- 29. 笨刪除多行與複選框
- 30. 用複選框刪除多行mysql
感謝Darin,它工作。 – 2010-09-08 08:07:44
我不明白複選框的值如何確定,請您解釋一下嗎?我對MVC很陌生,並試圖找出它。謝謝。 – Shimmy 2012-11-05 23:22:33