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

Saber que control lanza un evento en un TemplateColumn

Estas en el tema de Saber que control lanza un evento en un TemplateColumn en el foro de .NET en Foros del Web. Hola, tengo un ASPGridView al que añado un TemplateColumn como el siguiente: Código: <asp:TemplateColumn ItemStyle-Width="150px"> <ItemTemplate> <asp:TextBox id="txtObservaciones" runat="server"/> <asp:DropDownList ID="dpdCombo" runat="server" AutoPostBack="true" CssClass="combogra" onselectedindexchanged="dpdCombo_SelectedIndexChanged"/> ...
  #1 (permalink)  
Antiguo 16/05/2011, 05:22
 
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 51
Antigüedad: 17 años
Puntos: 1
Saber que control lanza un evento en un TemplateColumn

Hola,

tengo un ASPGridView al que añado un TemplateColumn como el siguiente:

Código:
<asp:TemplateColumn ItemStyle-Width="150px">
   <ItemTemplate>
      <asp:TextBox id="txtObservaciones" runat="server"/>
      <asp:DropDownList ID="dpdCombo" runat="server" AutoPostBack="true" CssClass="combogra" 
            onselectedindexchanged="dpdCombo_SelectedIndexChanged"/>
   </ItemTemplate>
</asp:TemplateColumn>
En tiempo de ejecución, creo un grid que va a contener un texbox, correspondiente a txtObservaciones y varios combos correspondientes a dpdCombo. Cada combo va a lanzar un evento, puesto que lo tiene asignado el contro, pero no se como diferenciar que combo me ha lanzado el evento. ¿Alguién sabe como puedo hacer esto?

Muchas gracias
  #2 (permalink)  
Antiguo 16/05/2011, 15:07
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 10 meses
Puntos: 37
Respuesta: Saber que control lanza un evento en un TemplateColumn

Hola tesitina

Suponiendo que ya tienes llenos tus DropDownList dentro de tu DataGrid.

En un control DataGrid puedes utilizar el evento SelectedIndexChanged al igual que lo utilizas en un ComboBox:

protected void TuDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList list = (DropDownList)sender;

TableCell cell = list.Parent as TableCell;
DataGridItem item = cell.Parent as DataGridItem;

int index = item.ItemIndex;

string content = item.Cells[0].Text; // Donde [int] es el número de la columna del DataGrid
}

Realizando lo anterior aparte de tener el índice de tu DropDownList puedes obtener valores clave los cuales puedes utilizar para realizar la acción que desees (por ejemplo un UPDATE) como el valor que se obtiene en la variable content.

En tu .aspx llamas este método en el evento OnSelectedIndexChanged (en tu columna Template)

<asp:TemplateColumn HeaderText="Datos">
<ItemTemplate>
<asp:DropDownList ID="NombreDeTuDropDownList" runat="server" OnSelectedIndexChanged = "NombreDeTuDropDownList_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>

Asegurate de que tengas la propiedad AutoPostBack = true.

Espero y te sirva. Saludos!
__________________
http://ka0stj.wordpress.com/
  #3 (permalink)  
Antiguo 17/05/2011, 01:41
 
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 51
Antigüedad: 17 años
Puntos: 1
Respuesta: Saber que control lanza un evento en un TemplateColumn

Hola Ka0stj,

el problema que tengo es que cada combo no tiene un índice fijo. Los combos los utilizo para que el usuario responda a una serie de preguntas y en función de la respuesta en un combo, te aparecerá o no otro combo. Por ejemplo, si yo hago una pregunta del estado de un equipo, y en el combo el usuario selecciona dañado, se pondrá visible otro combo para responder a otra pregunta, y así sucesivamente. Por tanto, los combos no van a tener un indice fijo. Es por ello, por lo que necesito saber si hay alguna forma de identificar que combo ha lanzado el evento SelectIndexChanged.

Muchas gracias

Etiquetas: control, evento
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




La zona horaria es GMT -6. Ahora son las 23:07.