none
Webcontrol con datagrid y editcommand RRS feed

  • Pregunta

  •  

    Hola,

     

    he creado un webcontrol que contiene un datagrid y algunos otros controles. Funciona todo correctamente, pero cuando añado la columna que se supone utilizaré para seleccionar una fila del grid cargado no hace nada. He leido algo de documentación acerca de DatagridCommandEventHandler pero aunque lo implemento en el CreateChildControls y referencio a EditCommand que es el evento que quiero implementar sigue sin hacer nada. Esta mal planteado??

     

    Gracias

    miércoles, 6 de agosto de 2008 2:53

Todas las respuestas

  • Tendrías que propagar el evento que quieras lanzar desde la grid y mostrarlo desde tu control.

     

    Puedes ver un ejemplo de un WebControl en mi blog.

     

    http://geeks.ms/blogs/mrubino/archive/2007/09/19/custom-control-i.aspx

    http://geeks.ms/blogs/mrubino/archive/2007/09/23/custom-control-ii.aspx 

    http://geeks.ms/blogs/mrubino/archive/2007/09/23/custom-control-iii.aspx

     

    Si la respuesta ha sido de utilidad marca la como correcta.

     

    Saludos.

     

     

    miércoles, 6 de agosto de 2008 7:53
  • He visto tus articulos y voy a hacer unas pruebas. Mi idea es definir el evento en el webcontrol pero el código realmente que ejecutará se encuentra en el aspx.cs de la página que contiene el control.
    miércoles, 6 de agosto de 2008 8:19
  • Perfecto, ya comentarás si te ha servido el ejemplo

     

     

    Saludos.

    miércoles, 6 de agosto de 2008 9:25
  •  

    Buenas de nuevo,

     

    os paso el codigo que tengo por que será más fácil; asi es como está contruido, quitando todo lo que para este caso no es importante y dejando creo que la parte que es necesario arreglar. Al método asociado en el aspx.cs que se crea no se accede nunca cuando se pulsa sobre el boton editar. El botón editar lo creo con un metodo del propio control también, pero he comprobado que se crea bien, por lo que el problema sería unicamente que no accede correctamente al valor de cada uno de los linkbutton que contiene el datagrid.

     

    Code Snippet

    /* los using */

    namespace ControlesWeb
    {
      [DesignerAttribute(typeof(GridDatosDesigner), typeof(IDesigner)), ToolboxData("<{0}:GridDatos runat=server></{0}:GridDatos>")]
      public class GridDatos : WebControl, IPostBackEventHandler
      {
        public event DataGridCommandEventHandler EditedCommand;

        private DataGrid m_grdDatos = new DataGrid();

        protected override void OnInit(EventArgs e)
        {
          m_grdDatos.AutoGenerateColumns = true;
          m_grdDatos.UseAccessibleHeader = true;
        }

        protected override void CreateChildControls()
        {
          m_grdDatos.ID = this.ID + "dt";
          Controls.Add(m_grdDatos);
        }

      /* AQUI VA TODO EL FREGADO DE PROPIEDADES DEL CONTROL Y LOS OTROS CONTROLS Y DEMAS */

        protected void OnEditedCommand(DataGridCommandEventArgs e)
        {
          if (EditedCommand != null) EditedCommand(this, e);
        }
      }
    }

     

     

    miércoles, 6 de agosto de 2008 9:41
  • Cuando inicialices el control grid le añades un nuevo manejador de eventos.

     

    Code Snippet

     

    grdDatos.RowCommand += new GridViewCommandEventHandler(m_grdDatos_RowCommand);

     

    void m_grdDatos_RowCommand (object sender, GridViewCommandEventArgs e)

    {

    OnEditedCommand(e);

    }

     

     

     

    Prueba esto haber si te sirve.

     

    Si la respuesta ha sido de utilidad marca la como correcta.

     

    Saludos.

    miércoles, 6 de agosto de 2008 15:41
  •  

    Buenas,

     

    de momento na de na, he probado a crear el control con un datagrid y con un gridview. La columna utilizada para editar (en mi caso esta columna la quiero para pillar el argument y utilizarlo en la página donde se encuentra el control) la he creado manualmente y automaticamente (autogenerateeditcolumn=true) y en todos los casos ocurre lo mismo. Al hacer click en el link hace postback, recarga la página y no hace nada más. Al trazar el control no pasa por ninguno de los eventos añadidos (Rowcommand, RowEditing y en el caso del datagrid EditCommand).

     

    Ya no se que más probar :-( ...........

     

     

    jueves, 7 de agosto de 2008 7:14