Foros del Web » Programación para mayores de 30 ;) » .NET »

Pasar código de DataGrid a GridView

Estas en el tema de Pasar código de DataGrid a GridView en el foro de .NET en Foros del Web. Hola a tod@s: ** Trabajando en C# ** Me estoy volviendo un poco loquillo con un código que tenía hecho para un DataGrid y que ...
  #1 (permalink)  
Antiguo 06/06/2007, 10:35
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Pasar código de DataGrid a GridView

Hola a tod@s:

** Trabajando en C# **

Me estoy volviendo un poco loquillo con un código que tenía hecho para un DataGrid y que al quererlo pasar a un GridView, al programarse de otra forma, no consigo dar con la forma correcta.

Todo ello es para el GridView disponga de la funcionalidad de poder elegir todas las filas (Seleccionar / Deseleccionar todas), luego pulsando otro botón Eliminar las seleccionadas.

Pues eso, estando en ASP.NET 1.0 tenía un DataGrid paginado con X registros por página.

Como primera columna del DataGrid, tengo un TemplateColumn con un CheckBox:

Código:
	<asp:TemplateColumn HeaderText="*">
		<ItemTemplate>
			<asp:CheckBox CssClass="la_casilla_check" id="casilla_check" runat="server"></asp:CheckBox>
		</ItemTemplate>
	</asp:TemplateColumn>
Encima del DataGrid, dos LinkButton [ Activar Todos ] y [ Desactivar Todos ], y luego abajo del DataGrid el LinkButton [ Eliminar Seleccionados ] que se encargará de ejecutar el borrado de las filas elegidas:

Código:
	<asp:LinkButton id="btnActivTodos" style="Z-INDEX: 106; LEFT: 139px; POSITION: absolute; TOP: 158px" runat="server" ToolTip="Activar Todos">[ Activar Todos ]</asp:LinkButton>
	<asp:LinkButton id="btnDesactivTodos" style="Z-INDEX: 107; LEFT: 239px; POSITION: absolute; TOP: 158px" runat="server" ToolTip="Desactivar Todos">[ Desactivar Todos ]</asp:LinkButton>
	<asp:LinkButton id="btnElimSelecc" style="Z-INDEX: 104; LEFT: 139px; POSITION: absolute; TOP: 438px" runat="server" ToolTip="Eliminar los Seleccionados">[ Eliminar Seleccionados ]</asp:LinkButton>
Y luego en los eventos Click de los LinkButton:

Código:
private void btnElimSelecc_Click(object sender, System.EventArgs e)
{
	int filasEliminadas = 0;
	//Recorre cada DataGridItem y determina qué controles CheckBox
	//están Activos para borrar esas filas.
	foreach(DataGridItem listPelis_DGItem in listPelis_DG.Items)
	{
		CheckBox casilla_check = (CheckBox)listPelis_DGItem.Cells[0].Controls[1];

		if(casilla_check.Checked == true)
		{
			string sql_borrado = "DELETE FROM PELICULAS WHERE peli_id = '" + listPelis_DG.DataKeys[listPelis_DGItem.ItemIndex] + "'";
			SqlCommand coman_borrado = new SqlCommand(sql_borrado, conexion);
			coman_borrado.Connection.Open();
			coman_borrado.ExecuteNonQuery();
			//listPelis_DG.EditItemIndex = -1;
			//listPelis_DG.SelectedIndex = -1;
			conexion.Close();
			filasEliminadas++;
		}
	}

	//
	//Valor CurrentPageIndex no válido. Debe ser >= 0 y < PageCount.
	if ((filasEliminadas == listPelis_DG.PageSize) && (listPelis_DG.CurrentPageIndex == listPelis_DG.PageCount - 1))
	{
		listPelis_DG.CurrentPageIndex = (listPelis_DG.CurrentPageIndex) - 1;
	}

	actualizar_Listado();//RECARGANDO EL DATAGRID
}

private void btnActivTodos_Click(object sender, System.EventArgs e)
{
	//Recorre cada DataGridItem y determina qué controles CheckBox
	//deben ser Activados.
	foreach(DataGridItem listPelis_DGItem in listPelis_DG.Items)
	{
		CheckBox casilla_check = (CheckBox)listPelis_DGItem.Cells[0].Controls[1];

		if(casilla_check.Checked == false)
		{
			casilla_check.Checked = true;
		}
	}
}

private void btnDesactivTodos_Click(object sender, System.EventArgs e)
{
	//Recorre cada DataGridItem y determina qué controles CheckBox
	//deben ser Desactivados.
	foreach(DataGridItem listPelis_DGItem in listPelis_DG.Items)
	{
		CheckBox casilla_check = (CheckBox)listPelis_DGItem.Cells[0].Controls[1];

		if(casilla_check.Checked == true)
		{
			casilla_check.Checked = false;
		}
	}
}
Con esto, obtengo la funcionalidad típica del Hotmail ó Yahoo, por poner ejemplos ilustrativos, de seleccionardeseleccionar todos a la vez y/ó eliminar seleccionados con un solo clic.

Entonces, ¿alguien me podría indicar como adaptar el código para obtener lo mismo en un GridView del ASP.NET 2.0?
Decir que el GridView que tengo montado aparte del 1º Checkbox para elegir esa fila a borrar, tengo otros dos checkbox que se están activados/desactivados según valores venidos de la base de datos
Sobre todo las partes indicadas en negrita...

Mirando en internet, encontré esta página que muestra como hacer esto:
http://aspalliance.com/1014_CodeSnip...GridView#Page5

La he probado y va bien, pero al pulsar el CheckBox que realiza la acción de [ Seleccionar/Deseleccionar Todos] no solamente me selecciona/deselecciona los checkbox de la primera columna sino también todos los demás (cosa no correcta del todo)

Así pues, a lo dicho, si alguien sabe cómo adaptar el mencionado código para el GridView ASP.NET 2.0 (C#), ó sabe cómo corregir el código de la página suministrada para que el seleccionar/deseleccionar afecte únicamente a los checkbox de la primera columna, le agradecería me lo comunicara...
__________________
Saludos,

zacktagnan.
=================================================
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 05:59.