ASP.NET - checkboxTemplate en el checkedChange

 
Vista:

checkboxTemplate en el checkedChange

Publicado por IDo (4 intervenciones) el 30/03/2010 09:21:11
Hola.
Vereis, he creado una columna para mi girdview como un template, ya que el gridview se genera dinamicamente, de la siguiente manera:

tf = New TemplateField
CheckBoxColumn = New GridViewCheckBoxTemplate(id, True)
tf.ItemTemplate = CheckBoxColumn
gv.Columns.Insert(gv.Columns.Count, tf)

Siendo el GridViewCheckBoxTemplate class:

Event CheckBoxCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)

Public Sub New(ByVal idAs Integer, ByVal chequeado As Boolean)
Me.id= id
Me.Checked = chequeado
End Sub

Private Sub CheckBoxItem_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
RaiseEvent CheckBoxCheckedChanged(sender, e)
End Sub

Public Overridable Overloads Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn
Dim checkBox As New CheckBox
checkBox.EnableViewState = True
checkBox.AutoPostBack = True
checkBox.ID = Me.Id
checkBox.Checked = Checked
AddHandler checkBox.CheckedChanged, AddressOf CheckBoxItem_CheckedChanged
container.Controls.Add(checkBox)
End Sub

Pero cuando cambio uno de los checks de los checkboxes, en vez de tener solo el checkChange event de ese checkbox, obtengo el evento de todos los checkboxes que tienen el estado diferente al de suc reación. Es decir, cuando creo la columna pongo todos chequeados, asi que cuadno deschequeo uno, en vez der ecibir el evento de solo ese checkbox, recibo el de todos aquellos que esten deschequeados.

Alguien sabe que está pasando y como puedo hacer para que solo salte el evento del checkbox que he tocado?

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:checkboxTemplate en el checkedChange

Publicado por PEDRO AYON GARCIA (1 intervención) el 10/06/2010 19:20:31
Para tener acceso a cualquier elemento de un control que agrupa otros controles necesitas accedera a ellos buscando lineas por linea:

for (int i=0;i < gridviewX.Rows.cunt; i++)
{
tipoobjeto objeto = gridviewx.rows[i].findcontrol("objetoabuscar") as tipoobjeto;
if (objeto!=null)
{
if(objeto == objetobuscado) // objetobuscado = sender
{
// escribir codigo deseado
}
}
}

//codigo estilo C# pero lo puedes aplicar para VB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar