Solved

Hotmail Style - "Select All" checkbox on a asp:checkbox - need little help

Posted on 2004-10-11
5
348 Views
Last Modified: 2008-02-26
Hi,

I have OnClick script running off my asp:checkbox "Select All" that call a javascript function in order to check and uncheck all checkboxes... I got that part working fine,
Now, once I have selected all checkboxes and then uncheck one checkbox further down I want my "Select All" checkbox at the top to be unchecked...  That's part I cant seem to get working.

Here's my javascript so far and also my OnClick event from my asp:checkbox.  Hope to hear from you guys soon, thanks




function select_deselectAll (chkVal, idVal) {
                              var frm = document.forms[0];

                              // Loop through all elements
                              for (i=0; i<frm.length; i++) {

                                    // Look for our Header Template's Checkbox
                                    if (idVal.indexOf ('chxSelectAll') != -1) {

                                          // Check if main checkbox is checked, then select or deselect datagrid checkboxes
                                          if(chkVal == true) {
                                                frm.elements[i].checked = true;
                                          }
                                          else {
                                                frm.elements[i].checked = false;
                                          }
                                    }
                                    
                                    // Work here with the Item Template's multiple checkboxes
                                     else if (idVal.indexOf ('chxSelect') != -1) {
                                          // Check if any of the checkboxes are not checked, and then uncheck top select all checkbox
                                          if(frm.elements[i].checked == false) {
                                                //frm.elements[1].checked = false; //Uncheck main select all checkbox
                                                //frm.getElementById('chxSelectAll').checked = false;
                                                alert("uncheck master box");
                                                var myId = document.getElementById("chxSelectAll");
                                                alert(myId);
                                                //myId.checked = false;
                                          }
                                    }
                              }

                        }







<asp:TemplateColumn HeaderText="Workflow">
      <HeaderTemplate>
            <asp:CheckBox id="chxSelectAll" OnClick="javascript: return select_deselectAll(this.checked, this.id);" Text="All" Runat="server" Width="50px"></asp:CheckBox>
      </HeaderTemplate>
      <ItemTemplate>
            <asp:checkbox id="chxSelect" OnClick="javascript: return select_deselectAll(this.checked, this.id);" Runat="server" Width="50px" Visible=False></asp:checkbox>
      </ItemTemplate>
</asp:TemplateColumn>



The bug lies within the last part of my javascript function.

      
0
Comment
Question by:newbreedcc
  • 3
5 Comments
 
LVL 28

Expert Comment

by:mmarinov
ID: 12276598
Hi newbreedcc,

look here : http://forums.devshed.com/archive/t-11535

Regards!
B..M
0
 
LVL 8

Expert Comment

by:tomvergote
ID: 12278303
>  var myId = document.getElementById("chxSelectAll");

if you view source, does it actually get that id?
using controls in web forms might mess up your naming.

you should look into control.clientid.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIControlClassClientIDTopic.asp

"ASP.NET automatically generates a ClientID for a server control regardless of whether you have specified an ID property for it or not. This property is used to identify a control for client-side operations, such as ECMAScript functions."
0
 
LVL 8

Accepted Solution

by:
tomvergote earned 125 total points
ID: 12278330
maybe i should elaborate.

you should add the script in the onload (or other) function by using the RegisterClientScriptBlock method.
The code for the script should be partially dynamically generated (ie the control names should be done as mentioned above).

your code should look like (pseudo code whipped up quickly before dinner)
page. RegisterClientScriptBlock( ....."else if (idVal.indexOf ('chxSelect') != -1) {
                                   // Check if any of the checkboxes are not checked, and then uncheck top select all checkbox
                                   if(frm.elements[i].checked == false) {
                                        //frm.elements[1].checked = false; //Uncheck main select all checkbox
                                        //frm.getElementById('chxSelectAll').checked = false;
                                        alert("uncheck master box");
                                        var myId = document.getElementById(\"" + MyCheckBox.ClientID + "\");
                                        alert(myId);
                                        //myId.checked = false;
                                   }");
0
 
LVL 8

Expert Comment

by:tomvergote
ID: 12278342
0
 
LVL 1

Author Comment

by:newbreedcc
ID: 12286717
Hi,

Thank you for the aricle, helped alot.
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question