Filas en las que se puede hacer clic en Gridview para la bandeja de entrada de mensajes

Sé que hay algunas otras preguntas como esta, pero no pude resolverlo en función de sus respuestas.

Estoy creando una página de bandeja de entrada de mensajes usando gridview. Actualmente, la vista de cuadrícula muestra a un usuario sus mensajes con los encabezados de columna: Enviado desde, Asunto y Fecha. Espero poder hacer clic en las filas (y resaltarlas al hacer clic) y que el mensaje aparezca en un cuadro de texto junto al cuadro de vista de cuadrícula. Quiero que se pueda hacer clic en la fila, pero no tener ese botón "Seleccionar" al costado de cada fila.

Cualquier ayuda con esto sería muy apreciada. No estoy seguro de si necesito cambiar las propiedades de mi cuadro de vista de cuadrícula o crear un método completamente nuevo.

Muchas Gracias

preguntado el 04 de julio de 12 a las 00:07

1 Respuestas

Primero agrega un comando de botón en su GridView como:

<asp:ButtonField Text="View" CommandName="ViewMe" ButtonType="Button" />

luego agregas el OnRowCommand="RowCommand" propiedad en GridView y en el código detrás de la función:

protected void RowCommand(object sender, GridViewCommandEventArgs e)
{
    // if the ViewMe command is fired
    if (e.CommandName == "ViewMe")
    {
        // go to find the index on the grid view
        int iTheIndexNow;
        if (int.TryParse(e.CommandArgument.ToString(), out iTheIndexNow))
        {
            // Set and highlight the selected
            gvGridViewID.SelectedIndex = iTheIndexNow;

            // get the table data id
            if (gvGridViewID.SelectedValue != null)
            {
                // now load the text where gvGridViewID.SelectedValue is 
                // the line id. This function load the text 
                //   into a TextBox or other control
                LoadText(gvGridViewID.SelectedValue.ToString());
            }    
        }
    }
}

En esta función, configura la fila seleccionada y obtiene el valor seleccionado que configuró en DataKeyNames, normalmente el ID de su tabla. Con esta identificación, puede mostrar el texto adicional de su mensaje.

Respondido 04 Jul 12, 00:07

¡Gracias por la respuesta! Me preguntaba, ¿qué es gvGridViewID en su código subyacente? ¿Es ese solo el nombre de identificación para el cuadro de vista de cuadrícula? Finalmente, supuse que tendría que haber una consulta para obtener el cuerpo del mensaje de la base de datos. ¿No es necesario en este caso? ¡Gracias! - Kevin

@Kevin El gvGridViewID es el ID (nombre) de GridView. - Aristóteles

@Kevin Sí, debe consultar para obtener el cuerpo del mensaje. ¿Por qué mantenerlo en la página? Creo que es demasiado mantener el cuerpo de 20 mensajes en la página solo para seleccionar uno para mostrarlo. - Aristóteles

¿Dónde va el código de consulta? Y mi pensamiento en esta página fue imitar una especie de sistema de mensajería de correo electrónico de Outlook. Cuando hace clic en cualquiera de los mensajes, el cuadro de texto cambia para mostrar el cuerpo de ese mensaje. De esa manera mantienes todo en la misma página. Necesito experimentar y ver, sin embargo, puede ser más fácil simplemente cargar una nueva página con el cuerpo. Creo que esto también es similar al sistema de mensajería de Ebay, el mensaje aparece debajo y te mantiene en la misma página. - Kevin

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.