Enviar matriz de valores de casilla de verificación de tabla a través de HTTP Post
Frecuentes
Visto 1,472 equipos
0
Tengo esta tabla con la que creo casillas de verificación dinámicas (la cantidad de registros puede/variará) la idea es que puedo seleccionar una casilla de verificación en cualquier fila de la tabla y "Enviar" esos registros.
Quiero enviar una serie de ID a una página diferente para su procesamiento, ¡pero estoy muy atascado!
Aquí está mi código de tabla/formulario
<form action="processingpage.aspx" method="post">
<asp:Repeater ID="GroupList" runat="server">
<HeaderTemplate>
<table id="grouptable" class="table">
<thead>
<tr>
<th>Broadcast</th>
<th>ID</th>
<th>Name</th>
<th>Last Modified</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<input type="checkbox" name="BroadcastSelect[]" value="<%# Eval("Group_ID") %>"</input></td>
<td><%# Eval("Group_ID") %></td>
<td><%# Eval("DESC") %></td>
<td><label id="test">hello</label></td>
<td><a class="btn btn-info" href="<%# Eval("gURL") %>">Edit</a>/td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
<input class="btn primary" type="submit" value="Broadcast"/>
</form>
Creo que esto está enviando bien la matriz, ya que logré ver esto a través de Request.in
BroadcastSelect[]TESTGROUP
(que es uno de los artículos que envié)
pero en mi página de recepción no obtengo nada más que texto en blanco que he intentado
Label1.Text = Page.Request.Form["BroadcastSelect[0]"];
y
Label1.Text = Page.Request.QueryString["BroadcastSelect[0]"];
pero no se imprimen valores. ¿Alguien puede señalarme en la dirección correcta?
1 Respuestas
2
Creo que el problema es que no es posible indexar el <input name="BroadcastSelect[]">
a Request.Form
or Request.QueryString
.
Si realiza un punto de interrupción en el código, verá que el objeto Request.Form tendrá Request.Form["BroadcastSelect[]"]
como uno de los elementos disponibles, que devolverá una lista de valores CSV.
Así que intenta usar esto en su lugar...
string broadcastSelect = Request.Form["BroadcastSelect[]"];
if (broadcastSelect != null)
{
string[] broadcastSelectParts = broadcastSelect.Split(',');
Label1.Text = broadcastSelectParts[0];
}
Obviamente, el código en el bloque también se puede reducir a una sola línea, pero si desea algo más que el primer elemento, verifique que no haya seleccionado un índice "fuera de límite"...
Label1.Text = broadcastSelect.Split(',')[0];
Respondido 31 Jul 12, 11:07
eso parece estar llegando :) ¿hay alguna forma de determinar cuántos elementos hay en la publicación? ¡Por cierto, gracias por la ayuda! - JazziJeff
broadcastSelectParts.Length
? Obviamente, eso solo funcionaría si hay una cadena válida para dividir, ya que una división de cadena vacía producirá un elemento. EDITAR sin embargo, diciendo eso, existe la StringSplitOptions.RemoveEmptyEntries
opción que puedes usar en Split
- Freefaller
@JazziJeff, o estás hablando del número total de publicaciones en todo el Request.Form
? Eso es más complicado, ya que debe tener en cuenta los elementos de tipo _EVENTTARGET, así como los elementos indexados, como su entrada anterior: Freefaller
no, estaba hablando de ese elemento específico de la publicación: ha sido un día largo, me olvidé de .Length :) ¡eso es suficiente para seguir adelante, gracias nuevamente por la ayuda! - JazziJeff
De nada @JazziJeff - buena suerte con el resto de tu proyecto, y espero (por tu bien) que tu día termine pronto :-) - Freefaller
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# asp.net forms http-post or haz tu propia pregunta.
Su
<input>
no está correctamente formateado, no se está cerrando correctamente. Sin embargo, no sé si eso hará alguna diferencia: freefalleracabo de ver esto yo mismo, sin embargo, no hay diferencia :( - JazziJeff