ASP.NET MVC, Tables Bootstrap, obtenir des valeurs pour chaque colonne

Dans ASP.NET MVC, une action prend les entrées de l’utilisateur sur les lignes et les colonnes, puis navigue vers l’action qui génère le nombre requirejs de lignes et de colonnes en fonction de l’entrée de l’utilisateur, comme indiqué ci-dessous: –

Vues:

@using (Html.BeginForm()) { @for (int k = 0; k < Model.Rows.Capacity; k++) { @for (int i = 0; i < Model.Columns.Capacity; i++) { } }
@Html.TextBox("name" + k + i, null, new { @class = "form-control" })
}

Et après être entré.

http://soffr.miximages.com/c%23/lxhOM.png

Dans l’action post, j’ai une collection de formulaires afin d’obtenir les données renseignées dans l’action post à l’aide d’une collection de formulaires. Dans l’action suivante, j’obtiens les valeurs de chaque champ d’entrée à l’aide d’une boucle foreach.

  [HttpPost] public ActionResult Enter(FormCollection form) { for (int i = 0; i < form.Count; i++) { Debug.WriteLine(form[i]); } return View(); } 

Je veux juste savoir comment obtenir toutes les valeurs d’une colonne dans l’action post et les obtenir colonne par colonne. Par défaut, les valeurs horizontales sont obtenues.

Merci. http://soffr.miximages.com/c%23/SBMvY.png

Créer des modèles de vue qui représentent ce que vous voulez afficher / éditer

 public class TableVM { public TableVM() { Rows = new List(); } public TableVM(int rows, int columns) : this() { for(int i = 0; i < rows; i++) { Rows.Add(new RowVM(columns)); } } public List Headers { get; set; } // for columns headers public List Rows { get; set; } } public class RowVM { public RowVM() { Cells = new List(); } public RowVM(int columns) : this() { for(int i = 0; i < columns; i++) { Cells.Add(new CellVM()); } } public List Cells { get; set; } } public class CellVM { public ssortingng Value { get; set; } } 

et dans la méthode GET, initialisez une nouvelle TableVM et renvoyez-la à la vue

 TableVM model = new TableVM(5, 5); // 5 x 5 grid model.Headers = new List{ "col 1", "col 2", "col 3", col 4", "col 5" }; return View(model); 

Vue

 @model TableVM ....  @foreach(ssortingng header in Model.Headers) {  }  @for(int r = 0; r < Model.Rows.Count; r++) {  for (int c = 0; c < Model.Rows[r].Cells.Count; c++) {  }  } 
@header
@Html.TextBoxFor(m => m.Rows[r].Cells[c].Value

Puis changez votre méthode POST pour accepter le modèle

 [HttpPost] public ActionResult Enter(TableVM model) 

Vous pouvez maintenant accéder à chaque ligne / colonne à l’aide d’indexeurs, par exemple model.Rows[1].Cells[2].Value renverra la valeur de la 3ème colonne de la deuxième ligne.

Le moyen le plus simple serait d’enregistrer le nombre de lignes et de colonnes avec les valeurs d’entrée:

 
@using (Html.BeginForm()) { @for (int k = 0; k < Model.Rows.Capacity; k++) { @for (int i = 0; i < Model.Columns.Capacity; i++) { } }
@Html.TextBox("name" + k + i, null, new { @class = "form-control" })
}

Une fois que vous en avez, vous pouvez les utiliser pour déterminer le nombre d’itérations à effectuer et les noms d’entrée à interroger:

 [HttpPost] public ActionResult Enter(FormCollection form) { var data = new List>(); var rows = int.Parse(form["rows"]); var columns = int.Parse(form["columns"]); for (var r = 0; r < rows; r++) { var rowData = new List(); for (var c = 0; c < columns; c++) { rowData.Add(form[string.Format("name{0}{1}", r, c)]); } data.Add(rowData); } return View(data); } 
 to get value horizontally you have to put name atsortingbute in your view like  @{ foreach (var item in Model.t1_List) {  } } 
Name Allocation Percentage Allocation
@item.Name
and then at the time of post or in action method you can get this as Dictionary _d_amt = new Dictionary(); Dictionary _d_per = new Dictionary(); foreach (var key in _frm.AllKeys) { if (key.ParseSsortingng().Contains("t1_txtamt-")) { decimal _val = _frm[key].ParseSsortingng().ParseDecimal(); decimal _id = key.Replace("t1_txtamt-", "").ParseSsortingng().ParseDecimal(); _d_amt.Add(_id, _val); } else if (key.ParseSsortingng().Contains("t1_txtper-")) { decimal _val = _frm[key].ParseSsortingng().ParseDecimal(); decimal _id = key.Replace("t1_txtper-", "").ParseSsortingng().ParseDecimal(); _d_per.Add(_id, _val); } } foreach (var item in _model.t1_List) { AllocationClass _litem = new AllocationClass(); _litem.BId = item.BId; _litem.Name = item.Name; _litem.AllocationPercentage = (from p in _d_per where p.Key == item.BId select p.Value).FirstOrDefault().ParseDecimal(); _litem.AllocationAmount = (from p in _d_amt where p.Key == item.BId select p.Value).FirstOrDefault().ParseDecimal(); _list.Add(_litem); }