En un desarrollo se me ha presentado un problema, necesito construir una tabla y seleccionar las filas, la solución que implementé fue muy sencilla
1. Modelo, en el modelo tengo un objeto que representa las filas de la tabla en ella se pueden añadir múltiples datos y agregar el elemento "selected" el cual es de tipo "bool" e indica si el elemento esta seleccionado o no:
public class Row
{
public string dato1{ get; set; }
public bool selected { get; set; }
}
2. Controlador, acá tengo las acciones "Get" y "Post", en la acción "Get", creo una lista de objetos fila de modo que en la vista se pueda mostrar el objeto y no este vacío, acá puedo decidir si por default estará seleccionada la fila o no:
//Get
public ActionResult Index()
{
List<Row> lslineas= new List<Row>();
Row linea = new Row{
dato1 = "",
selected = true
};
lslineas.Add(linea);
return View(lslineas);
}
en la acción "Post" tomo lista de objetos "Row" de la vista y se recorre dicha lista para hacer algo cuando el elemento "selected" sea verdadero:
[HttpPost]
public ActionResult Index(List<Row> lineas) {
foreach( x in lineas){
if(x.selected){
//accion
}
}
}
3. Vista, en la vista primero indico que el modelo que se utiliza para esta vista es una lista de objetos Row, en el formulario creo la tabla que se utilizará, utilizado un ciclo para recorrer la lista de objetos Row y el "boton" de "submit" que ejecutará la accion
//agregar el modelo como una lista de objetos Row
@model List<Proyecto.Row>
@using (Html.BeginForm("Index", FormMethod.Post))
{
<table>
<tr>
<th>
Titulo Columna Dato1
</th>
<th>
Titulo Columna Seleccion
</th>
</tr>
@for (int i = 0; i < Model.Count(); i++)
{
<tr>
<td>
@Html.TextBox("Row[" + @i + "].dato1",
Model[i].dato1,
new { @readonly = "readonly", @class= "form-control no-border" })
</td>
<td>
@Html.CheckBox("Row[" + @i + "].selected", Model[i].selected)
</td>
</tr>
}
</table>
<input type="submit" value="Eliminar" />
}
1. Modelo, en el modelo tengo un objeto que representa las filas de la tabla en ella se pueden añadir múltiples datos y agregar el elemento "selected" el cual es de tipo "bool" e indica si el elemento esta seleccionado o no:
public class Row
{
public string dato1{ get; set; }
public bool selected { get; set; }
}
2. Controlador, acá tengo las acciones "Get" y "Post", en la acción "Get", creo una lista de objetos fila de modo que en la vista se pueda mostrar el objeto y no este vacío, acá puedo decidir si por default estará seleccionada la fila o no:
//Get
public ActionResult Index()
{
List<Row> lslineas= new List<Row>();
Row linea = new Row{
dato1 = "",
selected = true
};
lslineas.Add(linea);
return View(lslineas);
}
en la acción "Post" tomo lista de objetos "Row" de la vista y se recorre dicha lista para hacer algo cuando el elemento "selected" sea verdadero:
[HttpPost]
public ActionResult Index(List<Row> lineas) {
foreach( x in lineas){
if(x.selected){
//accion
}
}
}
3. Vista, en la vista primero indico que el modelo que se utiliza para esta vista es una lista de objetos Row, en el formulario creo la tabla que se utilizará, utilizado un ciclo para recorrer la lista de objetos Row y el "boton" de "submit" que ejecutará la accion
//agregar el modelo como una lista de objetos Row
@model List<Proyecto.Row>
@using (Html.BeginForm("Index", FormMethod.Post))
{
<table>
<tr>
<th>
Titulo Columna Dato1
</th>
<th>
Titulo Columna Seleccion
</th>
</tr>
@for (int i = 0; i < Model.Count(); i++)
{
<tr>
<td>
@Html.TextBox("Row[" + @i + "].dato1",
Model[i].dato1,
new { @readonly = "readonly", @class= "form-control no-border" })
</td>
<td>
@Html.CheckBox("Row[" + @i + "].selected", Model[i].selected)
</td>
</tr>
}
</table>
<input type="submit" value="Eliminar" />
}
Comentarios