This is a migrated thread and some comments may be shown as answers.

Uncheck header checkbox programmatically

4 Answers 311 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Anthony
Top achievements
Rank 2
Anthony asked on 24 May 2011, 05:00 AM
Hello Telerik Team,

I want to achieve a scenario wherein I want the header checkbox to be uncheck whenever I click an item from the Grid.

Any help would be appreciated.

Regards,

Anthony

4 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 24 May 2011, 07:18 AM
Hello Anthony,

I am not quite sure about your requirement. I suppose you want this functionality in GridClientSelectColumn. If that is the requirement access CheckBox and then set Checked property as true in the RowSelecting event. You cannot directly access the HeaderTemplate controls. One suggestion is to save the CheckBoxcontrol ID in the Hidden Field and then  from the ItemCreatedEvent, access the CheckBox using the HiddenField value.

aspx:
<MasterTableView DataKeyNames="EmpId" CommandItemDisplay="Top">
  <Columns
   <telerik:GridClientSelectColumn HeaderText="chkbox" UniqueName="CheckBoxColumn">
     </telerik:GridClientSelectColumn>
        . . . .
  </Columns>
</MasterTableView>
 <ClientSettings >
      <ClientEvents OnRowSelecting="OnRowSelecting" />
     <Selecting AllowRowSelect="true" />
 </ClientSettings>

C#:
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
   {
       if (e.Item is GridHeaderItem)
       {
           GridHeaderItem item = (GridHeaderItem)e.Item;
           CheckBox chkbox = (CheckBox)item["CheckBoxColumn"].Controls[0];
        HiddenField1.Value = chkbox.ClientID.ToString();
    }
   }

Javascript:
<script type="text/javascript">
    function OnRowSelecting()
      {
      var hidden = document.getElementById("HiddenField1");
        var chkbox = document.getElementById(hidden.value);
        chkbox.checked = true;

     }
</script>

Thanks,
Princy.
0
Anthony
Top achievements
Rank 2
answered on 24 May 2011, 07:38 AM
Hello Sir,

Thanks for the reply.

The checkbox I am asking for is on a HeaderTemplate Column, this control if checked will select (using a checkbos also) all the items on the grid. To make this explanation better, please see my snippet below:

<Columns>
<telerik:GridTemplateColumn UniqueName="chkAllergen" DefaultInsertValue="">
 <ItemTemplate>
          <asp:CheckBox ID="chkAllergen" runat="server" Style="position: relative" AutoPostBack="true" OnCheckedChanged="chkLinkAllergen_CheckedChanged" />
  </ItemTemplate>
   <ItemStyle Width="50px" />
    <HeaderTemplate>
   <asp:CheckBox ID="chkAll" runat="server" Style="position: relative" AutoPostBack="true" OnCheckedChanged="chkAllLinkAllergen_CheckedChanged"/>
    </HeaderTemplate>
 </telerik:GridTemplateColumn>

............


Regards,

Anthony
0
Accepted
Jayesh Goyani
Top achievements
Rank 2
answered on 24 May 2011, 08:40 AM
Hi Anthony,

<telerik:GridTemplateColumn UniqueName="chkAllergen" DefaultInsertValue="">
                                  <ItemTemplate>
                                      <asp:CheckBox ID="chkAllergen" runat="server" Style="position: relative" AutoPostBack="true"
                                          OnCheckedChanged="chkLinkAllergen_CheckedChanged" />
                                  </ItemTemplate>
                                  <HeaderTemplate>
                                      <asp:CheckBox ID="chkAll" runat="server" Style="position: relative" AutoPostBack="true"
                                          OnCheckedChanged="chkAllLinkAllergen_CheckedChanged" />
                                  </HeaderTemplate>
                              </telerik:GridTemplateColumn>

protected void chkLinkAllergen_CheckedChanged(object sender, EventArgs e)
    {
 
        int count = 0;
        foreach (GridDataItem item in grdActionMenu.MasterTableView.Items)
        {
 
            CheckBox chkAllergen = (CheckBox)item.FindControl("chkAllergen");
            if (chkAllergen.Checked)
            {
                count++;
            }
 
        }
 
 
        foreach (GridHeaderItem headerItem in grdActionMenu.MasterTableView.GetItems(GridItemType.Header))
        {
            CheckBox chk = (CheckBox)headerItem["chkAllergen"].Controls[1]; // Get the header checkbox
            if (grdActionMenu.MasterTableView.Items.Count == count)
            {
                chk.Checked = true;
            }
            else
            {
                chk.Checked = false;
            }
 
        }
 
 
 
    }
    protected void chkAllLinkAllergen_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chkAll = sender as CheckBox;
        foreach (GridDataItem item in grdActionMenu.Items)
        {
 
            CheckBox chkAllergen = (CheckBox)item.FindControl("chkAllergen");
            chkAllergen.Checked = chkAll.Checked;
 
        }
    }


Thanks,
Jayesh Goyani
0
Anthony
Top achievements
Rank 2
answered on 24 May 2011, 08:50 AM
Thanks Jayesh,

That's somehow help me achieve my goal. I just extracted some of your code, analyze then bingo!! Thanks a lot!!!

Regards

Anthony
Tags
Grid
Asked by
Anthony
Top achievements
Rank 2
Answers by
Princy
Top achievements
Rank 2
Anthony
Top achievements
Rank 2
Jayesh Goyani
Top achievements
Rank 2
Share this question
or