valor seleccionar seleccionada obtener net indice fila datos asp asp.net gridview databound

asp.net - seleccionar - select gridview asp net



¿Cómo insertar programáticamente una fila en un GridView? (2)

Tengo un GridView de datos en asp.net 2.0 con un enlace de selección de filas. Cuando se selecciona una fila, quiero agregar programáticamente una fila de la tabla debajo de la fila seleccionada, para anidar otra grilla y demás.

Estoy investigando esto para un cliente y para un artículo, y creo que mi google-fu no es fuerte esta noche. ¿Alguna sugerencia?

EDITAR: en realidad tenía una solución funcional, pero Visual Studio estaba de alguna manera desquiciado; cerrar y volver a abrir VS y reconstruir todo solucionó el problema ;-)

Mi solución se publica a continuación, por favor dígame cómo hacerlo mejor si es posible. ¡Gracias!


Creo que lo descubrí. Aquí hay una solución que parece funcionar. Se podría mejorar usando controles de usuario, pero esta es la esencia de esto:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Selected) > 0) { Table tbl = (Table)e.Row.Parent; GridViewRow tr = new GridViewRow(e.Row.RowIndex + 1, -1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal); TableCell tc = new TableCell(); tc.ColumnSpan = GridView1.Columns.Count; tc.Controls.Add( makeChildGrid(Convert.ToInt32( ((DataRowView)e.Row.DataItem)["ROW_ID_FIELD"]))); tr.Cells.Add(tc); tbl.Rows.Add(tr); } } protected GridView makeChildGrid(int id) { GridView gv = new GridView(); SqlDataSource sqlds = new SqlDataSource(); sqlds.DataSourceMode = SqlDataSourceMode.DataSet; sqlds.ConnectionString = SqlDataSource1.ConnectionString; sqlds.SelectCommand = "SELECT * from MY_TABLE_NAME " + "WHERE KEY_FIELD = " + id.ToString(); DataView dv = (DataView)sqlds.Select(DataSourceSelectArguments.Empty); gv.DataSource = dv; gv.DataBind(); //not sure this is necessary...? return gv; }


Gracias por compartir este código

Estoy intentando hacer lo mismo (creando una vista de grilla anidada), pero en realidad, no tienes que crear la grilla de vista tú mismo. En cambio, solo puede ajustar el control dentro de las etiquetas. He visto un ejemplo aquí http://www.codeproject.com/KB/aspnet/EditNestedGridView.aspx?msg=3089755#xx3089755xx

Verás que el desarrollador ha anidado el control de gv con solo ajustar el segundo control de gridview dentro de las etiquetas.

Si PUEDE hacer lo que está haciendo por código, sería más eficiente. ¡No necesitarías mostrar todos los campos seleccionados! Además, visualmente podría tener algunos controles agregados a la vista de cuadrícula de su hijo.

He convertido tu código a vb y funciona perfectamente.

Gracias