none
Checkbox en Gridview ASP.Net C# RRS feed

  • Pregunta

  • Actualmente estoy haciendo un Gridview en asp.net C#, mi problema es que dentro de mi gridview necesito tener 2 checkbox, uno para "Aceptar" una requisicion y el otro para "Rechazar" la verdad es que me he quedado hasta este punto y necesito entregar este proyecto pronto, agradeceria su ayuda muchisimo.

    Gracias.

    PD Esta es la forma en la que he creado mi GridView en ASP.Net

    <td>
                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                        CellPadding="4" GridLines="Horizontal" BackColor="White"
                        BorderColor="#336666" BorderStyle="Double" BorderWidth="3px"
                        onpageindexchanged="GridView1_PageIndexChanged"
                        onpageindexchanging="GridView1_PageIndexChanging">
                    <Columns>
                    <asp:TemplateField HeaderText="ID">
                         <ItemTemplate>
                            <asp:Label ID="lblID" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Part">
                         <ItemTemplate>
                            <asp:Label ID="lblPart" runat="server" Text='<%# Eval("Part") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Scrapfactor">
                         <ItemTemplate>
                            <asp:Label ID="lblScrapfactor" runat="server" Text='<%# Eval("Scrapfactor") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Converfactor">
                         <ItemTemplate>
                            <asp:Label ID="lblConverfactor" runat="server" Text='<%# Eval("Converfactor") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="BOMQPA">
                         <ItemTemplate>
                            <asp:Label ID="lblBOMQPA" runat="server" Text='<%# Eval("Bomqpa") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Routing">
                         <ItemTemplate>
                            <asp:Label ID="lblRouting" runat="server" Text='<%# Eval("Routing") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Design">
                         <ItemTemplate>
                            <asp:Label ID="lblDesign" runat="server" Text='<%# Eval("Design") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Plannercode">
                         <ItemTemplate>
                            <asp:Label ID="lblPlannercode" runat="server" Text='<%# Eval("Plannercode") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="EngRecords">
                         <ItemTemplate>
                            <asp:Label ID="lblEngrecord" runat="server" Text='<%# Eval("Engrecord") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Inslevel">
                         <ItemTemplate>
                            <asp:Label ID="lblInslevel" runat="server" Text='<%# Eval("Inslevel") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Status">
                         <ItemTemplate>
                            <asp:Label ID="lblStatus" runat="server" Text='<%# Eval("Status") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Comments">
                         <ItemTemplate>
                            <asp:Label ID="lblComments" runat="server" Text='<%# Eval("Comments") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Fecha">
                         <ItemTemplate>
                            <asp:Label ID="lblFecha" runat="server" Text='<%# Eval("Fecha") %>'></asp:Label>
                         </ItemTemplate>
                    </asp:TemplateField>
                   <asp:TemplateField HeaderText="Accept">
                         <ItemTemplate>
                            <asp:CheckBox ID="chkAccept" runat="server" EnableViewState="true" Checked='<%#Convert.ToBoolean(Eval("Accept")) %>' />
                         </ItemTemplate>
                    </asp:TemplateField>
                  
                    </Columns>

    martes, 10 de septiembre de 2013 18:23

Respuestas

  • Ola chuy, eso es facil, lo que tienes que hacer es recorrer tu gridview, encuentras cuales son los chulos de aceptados y los de rechazados y realizas el codigo. seria algo así

    foreach (GridViewRow dtgItem in this.Gridview.Rows)
                {                
                    CheckBox Sel = ((CheckBox)Gridview.Rows[dtgItem.RowIndex].FindControl("chkAccept"));

      CheckBox SelRech = ((CheckBox)Gridview.Rows[dtgItem.RowIndex].FindControl("chkRechazar"));

                    bool valor = Sel.Checked;
                    if (valor)
                    {

    //aqui realizas tu codigo que acepta las solicitudes

    }

    bool valorRech = SelRech.Checked;

    if(valorRech )

    {

    // aqui rechazas las solicitudes

    }

    }

    Salu2

    • Marcado como respuesta Chuy Orozco martes, 10 de septiembre de 2013 20:08
    martes, 10 de septiembre de 2013 19:59

Todas las respuestas

  • Hola

    necesitas obtener setear ambos controles checkbox y tomar el valor?


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos

    martes, 10 de septiembre de 2013 18:43
  • hola

    pero no veo el problema, asi como defines el

    <asp:TemplateField HeaderText="Accept">
                         <ItemTemplate>
                            <asp:CheckBox ID="chkAccept" runat="server" EnableViewState="true" Checked='<%#Convert.ToBoolean(Eval("Accept")) %>' />
                         </ItemTemplate>
                    </asp:TemplateField>

    puedes definir otro que sea

    <asp:TemplateField HeaderText="Rechazar">
    <ItemTemplate>
        <asp:CheckBox ID="chkRechazar" runat="server" EnableViewState="true"    Checked='<%#Convert.ToBoolean(Eval("Rechazar")) %>' />
         </ItemTemplate>
    </asp:TemplateField>

    con eso defines otra columna para ese tipo de dato

    por supuesto vas a tener que agregar validaciones para que no se puedan marcar ambas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Chuy Orozco martes, 17 de septiembre de 2013 17:01
    • Desmarcado como respuesta Chuy Orozco martes, 17 de septiembre de 2013 17:09
    martes, 10 de septiembre de 2013 18:51
  • Juan Carlos/Leandro :

    De antemano gracias por su pronta respuesta, basicamente lo que necesito es saber como puedo validarlo, en Teoria tengo ya mi estructura del GridView en la parte de ASP.Net,necesito saber la parte de la validacion en C#,por ejemplo, selecciono 5 checkbox de "accept" y doy click en un boton que me cambie el campo status a "Aceptado" lo mismo para Reject podrian ayudarme con eso, de antemano muchas muchas gracias por la atencion.

    Saludos


    • Editado Chuy Orozco martes, 10 de septiembre de 2013 19:34
    martes, 10 de septiembre de 2013 19:29
  • pero entonces los checkbox son de solo lectura? o sea informativos

    o es que el usuario marca los checkbox

    porque segun veo hay un boton que realiza acciones y cambia el estado de la entidad para pasarlo de estado, lo cual se reflejaria en los checkbox

    es asi como lo planteo ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 10 de septiembre de 2013 19:33
  • Leandro:

    Nuevamente gracias por la atencion, el usuario revisara las requisiciones, y tendra la opcion de Aceptar o Rechazar los cambios segun la seleccion del checkbox, el usuario sera quien seleccione que Checkbox marcara si "Aceptar" o "Rechazar", una vez que el usuario marque los checkbox que necesite, dara click en el boton que ejecutara que se guarde si se acepto o rechazo la requisicion.

    Gracias

    martes, 10 de septiembre de 2013 19:41
  • Ola chuy, eso es facil, lo que tienes que hacer es recorrer tu gridview, encuentras cuales son los chulos de aceptados y los de rechazados y realizas el codigo. seria algo así

    foreach (GridViewRow dtgItem in this.Gridview.Rows)
                {                
                    CheckBox Sel = ((CheckBox)Gridview.Rows[dtgItem.RowIndex].FindControl("chkAccept"));

      CheckBox SelRech = ((CheckBox)Gridview.Rows[dtgItem.RowIndex].FindControl("chkRechazar"));

                    bool valor = Sel.Checked;
                    if (valor)
                    {

    //aqui realizas tu codigo que acepta las solicitudes

    }

    bool valorRech = SelRech.Checked;

    if(valorRech )

    {

    // aqui rechazas las solicitudes

    }

    }

    Salu2

    • Marcado como respuesta Chuy Orozco martes, 10 de septiembre de 2013 20:08
    martes, 10 de septiembre de 2013 19:59
  • aBlanco buenos dias:

    Me ha surgido un nuevo problema, y es que una vez que he resuelto lo del checkbox con tu valiosa ayuda, necesito saber como colocar que cada una de las filas que tienen el checkbox.checked cambien su campo status a "Accepted o Rejected segun el checkbox", disculpa por tanta pregunta pero mi novates me gana.

    Gracias de antemano.

    martes, 17 de septiembre de 2013 17:09