es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Leyendo desde un gridview con dos cabeceras.

Estoy usando ASP.NET con C#. Tengo un GridView y necesitaba tener dos encabezados. Así que utilicé el siguiente código para agregar otro encabezado después de enlazar los datos.

“`c#
gridView.DataSource = dataTable;
gridView.DataBind();
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
TableHeaderCell cell = new TableHeaderCell
{
Text = titleST,
ColumnSpan = 5
};
row.Controls.Add(cell);
row.BackColor = ColorTranslator.FromHtml("#3AC0F2");
row.BorderStyle = BorderStyle.Solid;
row.BorderColor = Color.Black;
row.BorderWidth = Unit.Parse("2");
gridView.HeaderRow.Parent.Controls.AddAt(0, row);

<pre><code><br />El problema es que cuando intento leer los datos del gridView, de alguna manera la primera fila no tiene datos.
Así es como leo los datos:

“`c#
foreach (GridViewRow row in gridView.Rows)
{
int atmpt = ((DropDownList)row.FindControl(“ddlAttemptsT”)).SelectedIndex;
Int64 selId = Int64.Parse(((HiddenField)row.FindControl(“SelId”)).Value);
double wt = int.Parse(row.Cells[2].Text);
double grade = double.Parse(((TextBox)row.FindControl(“grade”)).Text);
}

Estoy pensando que agregué el nuevo encabezado en el índice 0, lo que elimina la primera fila. Pero en la interfaz gráfica de usuario, la primera fila existe. Intenté hacer AddAt(-1, row), pero eso lo agrega al final del gridView.

¿Alguna sugerencia sobre cómo resolver este problema? Por favor, avíseme si necesito aclarar más mi pregunta. Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que agregar una nueva fila de encabezado en el índice 0 está causando el problema de que se pierda la primera fila de datos. Una posible solución podría ser agregar una fila en blanco en el índice 0 y luego agregar la nueva fila de encabezado en el índice 1. De esta manera, no se perderá la primera fila de datos y la nueva fila de encabezado será visible después de la fila en blanco.

    Aquí está el código modificado para lograr esto:

    “` c#
    gridView.DataSource = dataTable;
    gridView.DataBind();

    // Agregar una fila en blanco en el índice 0
    GridViewRow blankRow = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
    TableCell cell = new TableCell {
    Text = “”
    };
    blankRow.Cells.Add(cell);
    gridView.Controls[0].Controls.AddAt(0, blankRow);

    // Agregar la nueva fila de encabezado en el índice 1
    GridViewRow headerRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
    TableHeaderCell headerCell = new TableHeaderCell {
    Text = titleST,
    ColumnSpan = 5
    };
    headerRow.Cells.Add(headerCell);
    headerRow.BackColor = ColorTranslator.FromHtml(“#3AC0F2”);
    headerRow.BorderStyle = BorderStyle.Solid;
    headerRow.BorderColor = Color.Black;
    headerRow.BorderWidth = Unit.Parse(“2”);
    gridView.Controls[0].Controls.AddAt(1, headerRow);
    “`

    Con esta modificación, deberías poder leer datos de la GridView sin perder la primera fila.

Comments are closed.