1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

problema a check uncheck all checkbox

Discussão em 'Web Development' iniciada por alfinete, 11 de Fevereiro de 2009. (Respostas: 0; Visualizações: 1256)

  1. alfinete

    alfinete Power Member

    code ascx

    Código:
    <%@ Control Language="C#" AutoEventWireup="true" Codebehind="wucEnbGridPagingTeste.ascx.cs"
        Inherits="StepAhead.Web.EnbOffices.ENBOfficesWUControl.wucEnbGridPagingTeste" %>
        
     <script language="javascript" type="text/javascript">  
        function SelectAll(id)
            {
                //get reference of GridView control
               // ctl00_Contentescola_grvescolas
                var grid = document.getElementById("ctl00_ContentPlaceHolder1_WucEnbGridPagingTeste1_grvteste");
               
                var cell;
                
                if (grid.rows.length > 0)
                {
                    //loop starts from 1. rows[0] points to the header.
                    for (i=1; i<grid.rows.length; i++)
                    {
                        //dar a referencia da 1ª coluna
                        cell = grid.rows[i].cells[0];
                        
                        //loop according to the number of childNodes in the cell
                        for (j=0; j<cell.childNodes.length; j++)
                        {           
                            //se tipod e no filho é checkbox                 
                            if (cell.childNodes[j].type =="checkbox")
                            {
                            //atribuir o estatuto da caixa Selecionar tudo para a checkbox dentro da grid
                                cell.childNodes[j].checked = document.getElementById(id).checked;
                            }
                        }
                    }
                }
            }
    
    
    </script>
     
    <table runat="server" id="tblGV" cellpadding="0" cellspacing="1" width="100%" class="SACTable"
        border="0">
        <tr>
            <td class="SACGridViewMenuTitle" colspan="3">
                &nbsp;<asp:Label runat="server" ID="lblTitle">teste</asp:Label></td>
        </tr>
        <tr>
            <td class="SACGridViewMenuTitle">
                Coluna&nbsp;<asp:DropDownList ID="ddlFilterName" runat="server" CssClass="SACDDL">
                </asp:DropDownList>
            </td>
            <td class="SACGridViewMenuTitle">
                <asp:TextBox ID="txtFilter" runat="server" Width="280px" CssClass="SACTextbox"></asp:TextBox>&nbsp;&nbsp;
            </td>
            <td class="SACGridViewMenuTitle">
                <asp:Button ID="btnFilter" runat="server" Text="Filtrar" CssClass="SACButton" /><br />
            </td>
        </tr>
        <tr>
            <td colspan="3">
                <asp:GridView ID="grvteste" runat="server" AllowPaging="True" PageSize="5" BackColor="#779F01"
                    BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2"
                    AutoGenerateColumns="False" Width="640px" OnRowCommand="grvteste_RowCommand"
                    OnPageIndexChanging="grvteste_PageIndexChanging" OnRowDataBound="grvteste_RowDataBound"
                    DataKeyNames="EnbCorpoId">
                    <Columns>
                        <asp:TemplateField HeaderText="Select_All">
                            <HeaderTemplate>
                                <asp:CheckBox ID="chkSelectAll" runat="server" Text="SelectAll" />
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:CheckBox ID="chk1" runat="server" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField FooterText="ID" HeaderText="Id" DataField="EnbCorpoId">
                            <ControlStyle Width="150px" />
                            <ItemStyle Width="150px" />
                            <HeaderStyle Width="150px" />
                            <FooterStyle Width="150px" />
                        </asp:BoundField>
                        <asp:BoundField FooterText="Nome" HeaderText="Nome" DataField="Nome">
                            <ControlStyle Width="600px" />
                            <ItemStyle Width="600px" />
                            <HeaderStyle Width="600px" />
                            <FooterStyle Width="600px" />
                        </asp:BoundField>
                        <asp:BoundField FooterText="Código" HeaderText="Código" DataField="Codigo">
                            <ControlStyle Width="40px" />
                            <ItemStyle CssClass="trat" Width="40px" />
                            <HeaderStyle Width="40px" />
                            <FooterStyle Width="40px" />
                        </asp:BoundField>
                    </Columns>
                    <RowStyle BackColor="White" ForeColor="Black" />
                    <SelectedRowStyle BackColor="yellow" Font-Bold="True" ForeColor="White" />
                    <PagerStyle ForeColor="White" HorizontalAlign="Center" Font-Size="Medium" />
                    <HeaderStyle BackColor="#779F01" Font-Bold="True" ForeColor="White" />
                </asp:GridView>
                <asp:HiddenField ID="Hdteste" runat="server" />
            </td>
        </tr>
        <tr>
            <td align="center" colspan="3">
                <asp:Button runat="server" ID="btnCloseWindow" OnClientClick="Javascript:window.close();"
                    CssClass="SACButton" Text="Fechar Janela" />
            </td>
        </tr>
    </table>
    
    
    code c#


    Código:
    
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections.Generic;
    namespace StepAhead.Web.EnbOffices.ENBOfficesWUControl
    {
        public partial class wucEnbGridPagingTeste : System.Web.UI.UserControl
        {
            List<string> lista = new List<string>();
            List<string> listaid = new List<string>();
            private int n_IdAll = 0;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                   loaddados();
                }
    
               
            }
    
            protected void grvteste_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                //    ArrayList arList = new ArrayList();
                //    string newKeyName = "EnbCorpoId";
                //    foreach (string dkn in grvteste.DataKeyNames)
                //    {
                //        arList.Add(dkn);
                //    }
                //    arList.Add(newKeyName);
                //    grvteste.DataKeyNames = (string[])arList.ToArray(typeof(string));
            }
    
    
            protected void grvteste_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
    
                string[] arrIDs = this.Hdteste.Value.Split(new char[] { '|' });
                foreach (GridViewRow row in grvteste.Rows)
                {
                    CheckBox cb = (CheckBox)row.FindControl("chk1");
                    string ID = string.Empty;
                    if (cb.Checked)
                    {
                        // this.GridView1.DataKeys[this.GridView1.SelectedRow.RowIndex].Values[1].ToString();
    
                        ID = grvteste.DataKeys[row.RowIndex].Value.ToString();
                        if (Array.IndexOf(arrIDs, ID) == -1)
                        {
                            this.Hdteste.Value += ID + "|";
                        }
                    }
                    else
                    {
                        ID = grvteste.DataKeys[row.RowIndex].Value.ToString();
                        if (Array.IndexOf(arrIDs, ID) != -1)
                        {
                            this.Hdteste.Value = this.Hdteste.Value.Replace(ID + "|", "");
                        }
                    }
                }
    
                grvteste.PageIndex = e.NewPageIndex;
                loaddados();
            }
    
            protected void grvteste_RowDataBound(object sender, GridViewRowEventArgs e)
            {
    
    
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
    
    [B][COLOR=Red]//((CheckBox)e.Row.FindControl("chkSelectAll")).Attributes.Add("onclick", //"javascript:SelectAll('" +
     //                           ((CheckBox)e.Row.FindControl("chkSelectAll")).ClientID + "')");[/COLOR][/B]
                    string[] arrIDs = this.Hdteste.Value.Split(new char[] { '|' });
                    CheckBox cb = (CheckBox)e.Row.FindControl("chk1");
                    string ID = grvteste.DataKeys[e.Row.RowIndex].Value.ToString();
                    if (Array.IndexOf(arrIDs, ID) != -1)
                    {
                        cb.Checked = true;
                    }
    
                  
                }
            }
    
    
    
    
           
           
            private void loaddados()
            {
             
                ENB.BussinessLayer.ENBStats oStats = new ENB.BussinessLayer.ENBStats();
                DataTable dt = oStats.ENBEntitySELByMatch("", 0);
                grvteste.DataSource = dt;
    
                grvteste.DataBind();
                dt = null;
            }
    
        
    
        }
    }
    
    isto funciona tdo na perfeição expeto quando descomento a linha a vermelho

    do tipo

    isto mostra uma grid com dados em que ao checarmos um e mudarmos de pagina de mesma e ,voltarmos a traz ele mantem checkado, a linha que esta a vermelho serve para utilizar o javascript e checar e deschecar tdos ao seleccionar e desceleccionar a check do header, ou seja é esta ultima questão que não funciona


    no caso de eu tirar o code que guarda os checks e utilizar apenas o que faz check all ele ja funciona para o check all

    ou seja

    so funciona ou para um ou para outro

    eu gostava que funciona-se com as duas funcionalidades

    gstava de um help
     

Partilhar esta Página