Jak dodać pole wyboru do każdego wiersza siatki MVCcontrib. następnie, kiedy formularz zostanie zaksięgowany, dowiedzieć się, które rekordy zostały wybrane? Nie znajduję zbyt wiele przy szukaniu tego. DziękujęDodawanie pól wyboru do każdego wiersza w tabeli MVCcontrib
Odpowiedz
Oto jak można postępować:
Model:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsInStock { get; set; }
}
Kontroler:
public class HomeController : Controller
{
public ActionResult Index()
{
var products = new[]
{
new Product { Id = 1, Name = "product 1", IsInStock = false },
new Product { Id = 2, Name = "product 2", IsInStock = true },
new Product { Id = 3, Name = "product 3", IsInStock = false },
new Product { Id = 4, Name = "product 4", IsInStock = true },
};
return View(products);
}
[HttpPost]
public ActionResult Index(int[] isInStock)
{
// The isInStock array will contain the ids of selected products
// TODO: Process selected products
return RedirectToAction("Index");
}
}
Widok:
<% using (Html.BeginForm()) { %>
<%= Html.Grid<Product>(Model)
.Columns(column => {
column.For(x => x.Id);
column.For(x => x.Name);
column.For(x => x.IsInStock)
.Partial("~/Views/Home/IsInStock.ascx");
})
%>
<input type="submit" value="OK" />
<% } %>
Częściowa:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNamespace.Models.Product>" %>
<!--
TODO: Handle the checked="checked" attribute based on the IsInStock
model property. Ideally write a helper method for this
-->
<td><input type="checkbox" name="isInStock" value="<%= Model.Id %>" /></td>
I wreszcie oto metoda pomocnika można użyć do wygenerowania tego wyboru:
using System.Web.Mvc;
using Microsoft.Web.Mvc;
public static class HtmlExtensions
{
public static MvcHtmlString EditorForIsInStock(this HtmlHelper<Product> htmlHelper)
{
var tagBuilder = new TagBuilder("input");
tagBuilder.MergeAttribute("type", "checkbox");
tagBuilder.MergeAttribute("name", htmlHelper.NameFor(x => x.IsInStock).ToHtmlString());
if (htmlHelper.ViewData.Model.IsInStock)
{
tagBuilder.MergeAttribute("checked", "checked");
}
return MvcHtmlString.Create(tagBuilder.ToString());
}
}
co upraszcza częściowy:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNamespace.Models.Product>" %>
<td><%: Html.EditorForIsInStock() %></td>
rozwiązywania tego w każdym dostać prośbę jestem dołączanie zaznaczonych pól jako ciągów oddzielonych przecinkami. Następnie pobierz wartości z ciągu zapytania.
$("#pageLayout a").click(function() {
//Check for the click event insed area pageLayout
//get the href of link
var link = $(this).attr('href');
var apps = '';
//for all the checkbox get the checked status
$("input:checkbox").each(
function() {
if ($(this).attr('name') != 'IsChecked') {
if (apps != '') {
apps = apps + ',' + $(this).attr('name') + '=' + $(this).is(':checked');
}
else {
apps = $(this).attr('name') + '=' + $(this).is(':checked');
}
}
}
)
//Used to check if request has came from the paging, filter or sorting. For the filter anchor href doesnt haave
//any query string parameter. So for appending the parameter first ? mark is used followed by list of query string
//parameters.
var index = link.lastIndexOf('?');
//If there is no question mark in the string value return is -1
if (index == -1) {
//url for the filter anchor tag
//appList hold the comma sep pair of applicationcode=checked status
link = link + '?appList=' + apps + '&profileName=' + $('#ProfileName').val();
}
else {
//url for sorting and paging anchor tag
link = link + '&appList=' + apps + '&profileName=' + $('#ProfileName').val();
}
//Alter the url of link
$(this).attr('href', link);
});
nie wiem, czy to pomoże, ale zrobiłem coś podobnego przy użyciu kodu poniżej:
@Html.Grid(Model.PagedModel).AutoGenerateColumns().Columns(column => {
column.For(a => Html.ActionLink("Edit", "Edit", new { a.ID })).InsertAt(0).Encode(false);
column.Custom(a => Html.Raw("<input type='checkbox' name='resubmit' value='" + a.ID + "'/>"));
})
Mój kontroler był wtedy w stanie odbierać wybrane elementy CheckBoxList:
[HttpPost]
public ViewResult List(string[] resubmit)
To jest szybkie i brudne rozwiązanie. Ale czasami to wszystko, czego potrzebujesz :) – th1rdey3
W Twój widok (na przykład ReportList.cshtml) zawiera tabelę w formularzu i definiuje akcję dla formularza
<html>
<form action="/SubmitReportList">
@{Html.Grid((List<NetSheet.Models.Report>)ViewData["ReportList"])
.Sort((GridSortOptions)ViewData["sort"])
.Attributes(id => "grid", @class => "grid")
.Columns(column =>
{
column.For(c => Html.CheckBox("chkSelected", new { @class = "gridCheck", @value = c.ReportId }))
.Named("").Encode(false)
.Attributes(@class => "grid-column");
column.For(c => c.ReportName)
.Named("Buyer Close Sheet Name")
.SortColumnName("ReportName")
.Attributes(@class => "grid-column");
})
.Render();}
<input type="submit" name=" DeleteReports" id=" DeleteReports" value="Delete" class="btnSubmit"/>
</form>
</html>
Następnie w kontrolerze zaimplementować metoda działania
public ActionResult SubmitReportList (string ReportListSubmit, IList<string> chkSelected){
// The IList chkSelected will give you a list of values which includes report ids for the selected reports and “false” for the non-selected reports. You can implement your logic accordingly.
return View("ReportList");
}
- 1. sql dodawanie kolejnych wierszy do każdego wiersza
- 2. Stosowanie funkcji do każdego wiersza tabeli data.table
- 3. Dodawanie zdarzenia onclick do wiersza tabeli
- 4. Dodawanie przycisku do każdego wiersza w widoku listy
- 5. Siatka pól wyboru w WPF
- 6. usuwanie wierszy tabeli przy sprawdzaniu pól wyboru
- 7. Jak mogę sprawdzić wiele pól wyboru w jQuery?
- 8. Jquery uzyskać wartości wiersza tabeli z wybranymi wyboru
- 9. Dodawanie przycisku do wiersza w jqgrid
- 10. Walidacja dla wyboru pól wyboru?
- 11. jQuery: Ostatnie td każdego wiersza w tabeli html
- 12. Dynamiczne dodawanie pól wyboru tylko do formularza Windows Pokazuje jedno pole wyboru
- 13. Automatyczne dodawanie nowego wiersza do tabeli podczas edycji ostatniego
- 14. Dodawanie zdjęć do listy wyboru
- 15. Komórki pola wyboru i wiersze tabeli wyboru do wybrania
- 16. Dodawanie pól do zastępowanym klasy w Clojure
- 17. Szyny nested_form dodawanie elementów do wierszy tabeli
- 18. iterację pól wyboru w Kolby
- 19. Dodawanie wiersza do numpy recarray
- 20. Dodawanie zdarzeń do dynamicznie tworzonego pola wyboru w jquery mobile
- 21. Dostosowywanie administratora django do zależnych pól wyboru
- 22. Dodawanie pustej opcji do znaczników wyboru szyn
- 23. Link do wiersza tabeli HTML
- 24. Dodawanie dodatkowych pól do lokalnej strategii passport.js
- 25. Dodawanie kolejnych pól do kont użytkowników Meteor
- 26. dodawanie dodatkowych pól do formularzy django-userena
- 27. Sitecore - Dodawanie niestandardowych pól do edytora użytkownika
- 28. Dodawanie stałych pól do F # dyskryminowanych związków
- 29. Edytuj linki w GridModel (MVCContrib)
- 30. Dodawanie przycisku usuwania do kolumny w tabeli
Bardzo ładny dam tego spróbować. Dziękuję Ci! – twal
@Darin Dimitrov Czy byłoby możliwe użycie złożonego obiektu w POST zamiast tablicy liczb całkowitych? Zobacz swoją odpowiedź: http://stackoverflow.com/questions/5284395/checkboxlist-in-mvc3-view-and-get-the-checked-items-passed-to-the-controller – Rookian
@Rookian, oczywiście, że to możliwe . –