Enviar matriz de valores de casilla de verificación de tabla a través de HTTP Post

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?

preguntado el 31 de julio de 12 a las 10:07

Su <input> no está correctamente formateado, no se está cerrando correctamente. Sin embargo, no sé si eso hará alguna diferencia:

acabo de ver esto yo mismo, sin embargo, no hay diferencia :( -

1 Respuestas

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 or haz tu propia pregunta.