Click here to Skip to main content
15,894,176 members
Please Sign up or sign in to vote.
1.31/5 (3 votes)
I have a problem on the selections of my checkboxes, I don't know how to construct the program which will make the selections of these txtboxes correct so here it is,
I'm have four checkboxes here they are: chkAll, chkActivity, chkItem and chkService
XML
<asp:CheckBox ID="chkAll" runat="server" Text="All" Checked="True" ForeColor="#333333" style="font-family: sans-serif" AutoPostBack="True" oncheckedchanged="chkAll_CheckedChanged"/>
    <asp:CheckBox ID="chkActivity" runat="server"  Text="Activity" ForeColor="#333333" style="font-family: sans-serif" AutoPostBack="True" oncheckedchanged="chkAll_CheckedChanged"/>
    <asp:CheckBox ID="chkItem" runat="server"  Text="Item" ForeColor="#333333" style="font-family: sans-serif" AutoPostBack="True" oncheckedchanged="chkAll_CheckedChanged"/>
    <asp:CheckBox ID="chkService" runat="server" Text="Service" ForeColor="#333333" style="font-family: sans-serif" AutoPostBack="True" oncheckedchanged="chkAll_CheckedChanged"/>

By default the checkboxes are selected or checked == "true",
C#
protected void Page_Load(object sender, EventArgs e)
   {
       chkAll.Checked = true;
       chkActivity.Checked = true;
       chkItem.Checked = true;
       chkService.Checked = true;

Now when I deselect the first one which is chkAll meaning clicking on it so it will deselect, it will make all the other 3 which are chkActivity, chkItem and chkService unchecked/deselected too.
Now my problem is how to select the individual textboxes after or a comnibations of any of the three checkboxes deselected awhile ago please help me, I would really aprreciate your response and thanks in advanced.
By the way I've tried using this nested loop thing but it doesn't work, anyway I'll just post it so maybe you could improve it;
C#
protected void chkAll_CheckedChanged(object sender, EventArgs e)
   {
       if (chkAll.Checked)
       {
           chkActivity.Checked = true;
           chkItem.Checked = true;
           chkService.Checked = true;
       }
       else
       {
           if (chkActivity.Checked == false)
           {
               chkActivity.Checked = false;
           }
           else if (chkItem.Checked == false)
           {
               chkItem.Checked = false;
           }
           else if (chkService.Checked == false)
           {
               chkService.Checked = false;
           }
           else
           {
               chkActivity.Checked = false;
               chkItem.Checked = false;
               chkService.Checked = false;
           }
       }
   }
Posted
Updated 13-Aug-13 6:21am
v4
Comments
Richard C Bishop 13-Aug-13 12:19pm    
The reason that is happening is because you are calling the same event handler on each check box. What code exists inside that event handler?
pradiprenushe 13-Aug-13 12:28pm    
Not getting your requiement?
TryAndSucceed 13-Aug-13 12:44pm    
Try not using oncheckedchanged event in all the 3 checkboxes except "All". I think it is causing an infinite loop.

I used this:
C#
function NotAllByService() {
       var chkAct = document.getElementById('<%=chkActivity.ClientID %>');
       var chkServ = document.getElementById('<%=chkService.ClientID %>');
       var chkIte = document.getElementById('<%=chkItem.ClientID %>');
       if (chkServ.checked == false) {
           document.getElementById('<%=chkAll.ClientID %>').checked = false;
       }
       else {
           if (chkAct.checked == true & chkServ.checked == true & chkIte.checked == true) {
               document.getElementById('<%=chkAll.ClientID %>').checked = true;
           } else {
               document.getElementById('<%=chkAll.ClientID %>').checked = false;
           }
       }
   }

   function NotAllByActivity() {
       var chkAct = document.getElementById('<%=chkActivity.ClientID %>');
       var chkServ = document.getElementById('<%=chkService.ClientID %>');
       var chkIte = document.getElementById('<%=chkItem.ClientID %>');
       if (chkAct.checked == false) {
           document.getElementById('<%=chkAll.ClientID %>').checked = false;
       }
       else {
           if (chkAct.checked == true & chkServ.checked == true & chkIte.checked == true) {
               document.getElementById('<%=chkAll.ClientID %>').checked = true;
           } else {
               document.getElementById('<%=chkAll.ClientID %>').checked = false;
           }
       }
   }

   function NotAllByItem() {
       var chkIte = document.getElementById('<%=chkItem.ClientID %>');
       var chkServ = document.getElementById('<%=chkService.ClientID %>');
       var chkAct = document.getElementById('<%=chkActivity.ClientID %>');
       if (chkIte.checked == false) {
           document.getElementById('<%=chkAll.ClientID %>').checked = false;
       }
       else {
           if (chkAct.checked == true & chkServ.checked == true & chkIte.checked == true) {
               document.getElementById('<%=chkAll.ClientID %>').checked = true;
           } else {
               document.getElementById('<%=chkAll.ClientID %>').checked = false;
           }
       }

   }
 
Share this answer
 
Good day sir. Instead of calling a postback when you check the chkAll checkbox, you can just check the chkActivity, chkItem etc etc through javascript;

change your chkAll to this

C#
<asp:checkbox id="chkAll" runat="server" checked="True" forecolor="#333333" text="All" style="font-family:sans-serif" onchange="searchCheckAll();" xmlns:asp="#unknown" />


then add this function between
JavaScript
<script type="text/javascript"> and </script>


JavaScript
function searchCheckAll() {
            if (document.getElementById('<%=chkAll.ClientID %>').checked == true) {
                document.getElementById('<%=chkActivity.ClientID %>').checked = true;
                document.getElementById('<%=chkItem.ClientID %>').checked = true;
                document.getElementById('<%=chkService.ClientID %>').checked = true;

            }
            
        }


Please let me know if this works.

Love G :)
 
Share this answer
 
Comments
timJosh 13-Aug-13 13:05pm    
thank you for your response but what I need now is another javascript that will deselect everything the second time I hit the same textbox which is chkAll, another thing is the individual selections still doesn't work.
gaga blues 13-Aug-13 13:09pm    
Try this instead sir. Put this inside function searchCheckAll()

var chkAll = document.getElementById('<%=chkAll.ClientID %>');
if (chkAll.checked == true) {
document.getElementById('<%=chkActivity.ClientID %>').checked = true;
document.getElementById('<%=chkItem.ClientID %>').checked = true;
document.getElementById('<%=chkService.ClientID %>').checked = true;

} else {

document.getElementById('<%=chkActivity.ClientID %>').checked = false;
document.getElementById('<%=chkItem.ClientID %>').checked = false;
document.getElementById('<%=chkService.ClientID %>').checked = false;

}

}
Can I unsee it?!!! :-)

Really, it's painful to see. How it's possible to write such thing?

C#
if (chkActivity.Checked == false)
{
   chkActivity.Checked = false;
}

when essentially this does nothing?
And you should not write redundant "if"; when you have some Boolean value already it's
C#
bool condition = //...
//...
chkActivity.Checked = condition;

White the code in a non-nonsense, accurate way, and perhaps you won't need to ask such questions. :-)

—SA
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900