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

Generar checkbox a un GridView generado por codigo

Estas en el tema de Generar checkbox a un GridView generado por codigo en el foro de .NET en Foros del Web. Hola a todos en el foro. Tengo el siguiente problema, creo un GridView en tiempo de ejecucion cargado con valores extraidos desde una BD, el ...
  #1 (permalink)  
Antiguo 28/07/2011, 09:38
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 18 años, 5 meses
Puntos: 0
Generar checkbox a un GridView generado por codigo

Hola a todos en el foro.

Tengo el siguiente problema, creo un GridView en tiempo de ejecucion cargado con valores extraidos desde una BD, el tema esta en que a este listado de valores necesito que se le agregue una columna al inicio o al final con checkbox para poder ingresar o eliminar mas de un registro.

He buscado en varias partes pero no he conseguido mucho.

Adjunto el codigo que utilizo para crear el GridView y uno que me genera una columna pero no me rellena con los checkbox en las filas.
Código:
    dgv_Interna = new GridView();
                CheckBoxField col_dgv = new CheckBoxField();
                col_dgv.HeaderText = "Seleccionar";
                dgv_Interna.Columns.Add(col_dgv);                
                dgv_Interna.DataSource = CargarGrilla(id_doc.Text, id_nom_doc.Text, id_cont.Text, id_princ.Text);                
                dgv_Interna.DataBind();
Espero que alguien pueda orientarme. Se agradece de antemano.

Chauz
  #2 (permalink)  
Antiguo 28/07/2011, 14:15
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Generar checkbox a un GridView generado por codigo

Hola de nuevo.

Quisiera agregar que averiguando trate de crear una grilla a traves del diseñador grafico de VS y cuando creo una columna de tipo checkbox al ejecutar el programa tampoco me muestra la columna con los checkbox que estare haciendo mal. Los pasos que segui fueron los siguientes:

1.- cree una GridView desde la barra de objetos de VS.
2.- A traves del diseñador grafico ingrese en agregar nueva columna.
3.- Agregue una Colum Checkbox
4.- Le asigne un nombre al HeaderText
5. Por codigo le asigne una fuente al DataSource y Posteriormente realice el DataBind().

Y... no muestra nada solo genera la columna con las celdas pero no se ven los checkbox.

Pasa algo extraño al asignar un valor al campo DataField (que no entiendo su uso) me aparecen los checkbox en modo diseño, pero al ejecutar el programa me da un error con el origen de datos , error que salta en el dataBind.

Necesito de su ayuda por favor, cualquier orientacion siempre es bien recibida.

Chauz
  #3 (permalink)  
Antiguo 29/07/2011, 14:48
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Generar checkbox a un GridView generado por codigo

Hola a todos.

Para los que se interesen o tengan un problema parecido encontre una solucion, bastante arcaica, pero una solucion.

Lo que hice fue generar dos tablas una con las filas principales mas una secundaria y otra que recibe los datos y se inserta en la fila secundaria.

Aqui va el codigo.
Código C:
Ver original
  1. for (r = 0; r < num_filas; r++)
  2.             {
  3.                 i = f + 1; // esta variable se utiliza para crear la celda invisible
  4.  
  5.                 //Creacion de la Fila Principal
  6.                 Fila = new TableRow();
  7.                 Fila.TabIndex = (short)f;
  8.                 Fila.Attributes.Add("runat", "server");
  9.                 tbl_docPorEvento.Rows.Add(Fila);
  10.  
  11.                 //Creacion de columnas con datos para realizar el ingreso a la BD
  12.              
  13.  
  14.            
  15.  
  16.                 //Filas visibles
  17.                 Columna = new TableCell();
  18.                 Columna.Attributes.Add("id", "");
  19.                 Columna.Attributes.Add("runat", "server");    
  20.                 Columna.Text = (r + 1).ToString();
  21.                 Fila.Cells.Add(Columna);    
  22.  
  23.                 Columna = new TableCell();
  24.                 Columna.Attributes.Add("id", "_doc");
  25.                 Columna.Attributes.Add("runat", "server");    
  26.                 Columna.Text = ds_resul.Tables["resultado"].Rows[r]["_doc"].ToString();
  27.                 Fila.Cells.Add(Columna);    
  28.  
  29.                 Columna = new TableCell();
  30.                 Columna.Attributes.Add("id", "_doc");
  31.                 Columna.Attributes.Add("runat", "server");    
  32.                 Columna.Text = ds_resul.Tables["resultado"].Rows[r]["_doc"].ToString();
  33.                 Fila.Cells.Add(Columna);    
  34.  
  35.                
  36.  
  37.                 seleccionar = new CheckBox();
  38.                 seleccionar.ID =  "sel_" + i;                
  39.                 //seleccionar.Checked = true;
  40.                 seleccionar.Attributes.Add("onChange", "mostrar(" + i + ")");                
  41.                 Columna = new TableCell();
  42.                 Columna.Attributes.Add("id", "seleccionar_fila");
  43.                 Columna.Attributes.Add("runat", "server");                    
  44.                 Columna.Controls.Add(seleccionar);                
  45.                 Fila.Cells.Add(Columna);                                                                                
  46.  
  47.                 //Agregamos una fila con propiedad visible en false que mostrara en contenido del doumento
  48.                 F_Invisible = new TableRow();                
  49.                 F_Invisible.TabIndex = (short)i;                
  50.                 F_Invisible.Attributes.Add("runat", "server");    
  51.                 tbl_docPorEvento.Rows.Add(F_Invisible);
  52.                                                          
  53.                 TableCell colTMP = new TableCell();
  54.                 F_Invisible.Cells.Add(colTMP);
  55.  
  56.                 secundaria = CargarGrilla(tbl_docPorEvento.Rows[i].Cells[0].Text,
  57.                                           tbl_docPorEvento.Rows[i].Cells[3].Text,
  58.                                           tbl_docPorEvento.Rows[i].Cells[1].Text,
  59.                                           tbl_docPorEvento.Rows[i].Cells[2].Text);
  60.                 if (secundaria != null)
  61.                 {
  62.                     //Creamos la segunda tabla
  63.                     Table tbl_secundaria = new Table();
  64.                     tbl_secundaria.ID = "tabla_secundaria";
  65.                     tbl_secundaria.Attributes.Add("runat", "server");
  66.                     tbl_secundaria.Attributes.Add("border", "1");
  67.                     tbl_secundaria.Attributes.Add("align", "center");
  68.                     tbl_secundaria.Attributes.Add("cellpadding", "0");
  69.                     tbl_secundaria.Attributes.Add("cellspacing", "0");
  70.                     tbl_secundaria.Attributes.Add("width", "900");
  71.  
  72.                     secu_fil = secundaria.Rows.Count;
  73.                     secu_col = secundaria.Columns.Count;
  74.  
  75.                     TableRow fila_secu = new TableRow();
  76.                     TableCell cell_secu = new TableCell();
  77.  
  78.                     switch (tbl_docPorEvento.Rows[i].Cells[3].Text)
  79.                     {
  80.                         case "0":
  81.                             fila_secu = new TableRow();
  82.                             fila_secu.Attributes.Add("runat", "server");
  83.                             tbl_secundaria.Rows.Add(fila_secu);
  84.  
  85.                             cell_secu = new TableCell();
  86.                             cell_secu.Attributes.Add("align", "center");
  87.                             cell_secu.ColumnSpan = 4;
  88.                             cell_secu.Text = "Antecedentes del Prevencionista";
  89.                             fila_secu.Cells.Add(cell_secu);
  90.  
  91.                             fila_secu = new TableRow();
  92.                             fila_secu.Attributes.Add("runat", "server");
  93.                             tbl_secundaria.Rows.Add(fila_secu);
  94.  
  95.                             cell_secu = new TableCell();
  96.                             cell_secu.Text = "Seleccionar";
  97.                             fila_secu.Cells.Add(cell_secu);
  98.  
  99.                             cell_secu = new TableCell();
  100.                             cell_secu.Text = "ID";
  101.                             fila_secu.Cells.Add(cell_secu);
  102.  
  103.                             cell_secu = new TableCell();
  104.                             cell_secu.Text = "RUT";
  105.                             fila_secu.Cells.Add(cell_secu);
  106.  
  107.                             cell_secu = new TableCell();
  108.                             cell_secu.Text = "Nombre";
  109.                             fila_secu.Cells.Add(cell_secu);
  110.                             break;
  111.  
  112.                         case "6":
  113.                             fila_secu = new TableRow();
  114.                             fila_secu.Attributes.Add("runat", "server");
  115.                             tbl_secundaria.Rows.Add(fila_secu);
  116.  
  117.                             cell_secu = new TableCell();
  118.                             cell_secu.Attributes.Add("align", "center");
  119.                             cell_secu.ColumnSpan = 4;
  120.                             cell_secu.Text = "Antecedentes de Vehiculos del Contratista";
  121.                             fila_secu.Cells.Add(cell_secu);
  122.  
  123.                             fila_secu = new TableRow();
  124.                             fila_secu.Attributes.Add("runat", "server");
  125.                             tbl_secundaria.Rows.Add(fila_secu);
  126.  
  127.                             cell_secu = new TableCell();
  128.                             cell_secu.Text = "Seleccionar";
  129.                             fila_secu.Cells.Add(cell_secu);
  130.  
  131.                             cell_secu = new TableCell();
  132.                             cell_secu.Text = "Tipo";
  133.                             fila_secu.Cells.Add(cell_secu);
  134.  
  135.                             cell_secu = new TableCell();
  136.                             cell_secu.Text = "Marca";
  137.                             fila_secu.Cells.Add(cell_secu);
  138.  
  139.                             cell_secu = new TableCell();
  140.                             cell_secu.Text = "Modelo";
  141.                             fila_secu.Cells.Add(cell_secu);
  142.                             break;
  143.  
  144.                         default:
  145.                             break;
  146.  
  147.                     }
  148.  
  149.                     for (secu_fil = 0 ; secu_fil < secundaria.Rows.Count; secu_fil++)
  150.                     {
  151.                         fila_secu = new TableRow();
  152.                         fila_secu.Attributes.Add("runat", "server");
  153.                         tbl_secundaria.Rows.Add(fila_secu);
  154.  
  155.                         seleccionar = new CheckBox();
  156.                         seleccionar.Attributes.Add("runat", "server");
  157.                         cell_secu = new TableCell();
  158.                         cell_secu.Controls.Add(seleccionar);
  159.                         fila_secu.Cells.Add(cell_secu);
  160.  
  161.                         for (secu_col = 0; secu_col < secundaria.Columns.Count; secu_col++)
  162.                         {
  163.                             cell_secu = new TableCell();
  164.                             cell_secu.Attributes.Add("runat", "server");
  165.                             cell_secu.Text = secundaria.Rows[secu_fil][secu_col].ToString();                            
  166.                             fila_secu.Cells.Add(cell_secu);
  167.                         }
  168.                     }
  169.  
  170.                     C_Invisible = new TableCell();
  171.                     C_Invisible.Controls.Add(tbl_secundaria);
  172.                 }
  173.                 else
  174.                 {
  175.                     C_Invisible = new TableCell();
  176.                 }
  177.                                
  178.                 //C_Invisible.Attributes.Add("style", "visibility:hidden;");
  179.                 C_Invisible.ColumnSpan = 6;
  180.                 C_Invisible.ID = "fil_" + i;
  181.                 C_Invisible.Attributes.Add("align", "left");              
  182.                 F_Invisible.Cells.Add(C_Invisible);
  183.                 f = f + 2;
  184.             }            
  185.             conx.Clone();
  186.         }
  #4 (permalink)  
Antiguo 30/08/2013, 19:47
 
Fecha de Ingreso: agosto-2013
Mensajes: 1
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Generar checkbox a un GridView generado por codigo

Hola gente ha pasado tiempo pero veo que la solución encontrada es bastante rebuscada a un problemita. Aunque el tema es viejo, esta búsqueda sigue apareciendo en google o les puede servir a la gente del foto, asi que como yo llegué aquí otros seguramente llegarán.

La solución a lo planteado del problema gridView para agregar un CheckButton sería:

En el aspx agregamos:

Código ASP:
Ver original
  1. <asp:GridView runat="server" AutoGenerateColumns="false" DataKeyNames="Id">
  2.        <asp:BoundField runat="server" DataField="Id" HeaderText="Id" Visible="False" />
  3.                         <asp:TemplateField runat="server" HeaderText="Check">
  4.                             <itemtemplate>
  5.                                 <asp:CheckBox ID="chkPermiso" runat="server" CommandArgument="<%# Container.DataItemIndex %>"/>
  6.                             </itemtemplate>
  7.                         </asp:TemplateField>
  8.                     </asp:GridView>

En el GridView agregamos un control <asp:TemplateField> dentro del cual podemos agregar <ItemTemplate> y dentro de los mismos podemos agregar cuantos controles queramos que se repitan en nuestro gridview en esa columna.

Si queremos que aparezca otros datos, autogenerados o no, tenemos la opción de autogenerateColumn ="False/True".

En caso de querer generar columnas personalizadas agregamos <asp:BounField> con DataField = al nombre de la propiedad de los objetos que tomamos por DataSource, y HeaderText es el texto que se mostrará en la cabecera del. GridView.

Espero a alguien le sirva de utilidad.

Etiquetas: bd, checkbox, gridview
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:18.