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

[Solved] Checkbox Select

4 Answers 316 Views
Grid
This is a migrated thread and some comments may be shown as answers.
David
Top achievements
Rank 1
David asked on 17 Jan 2008, 09:30 PM
I am attempting to replicate the behavior found in this example:
http://www.telerik.com/DEMOS/ASPNET/Prometheus/Grid/Examples/Programming/SelectRowWithCheckBox/DefaultCS.aspx

I have everything setup virtually identically as far as I can tell with the exception that I am binding my datasource in the codebehind.  What is happening is that whenever I click a checkbox it says "loading" then the box is unchecked and the row is not selected.  I will post my code below just in case I have something wrong.

thanks
~David

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<telerik:RadAjaxManager ID="RadAjaxManager1" EnableAJAX="true" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="myTasksDG">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="myTasksDG" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>

<telerik:RadGrid id="myTasksDG"
                OnItemCreated="myTasksDG_ItemCreated"
                ShowStatusBar="true"
                runat="server"
                AllowPaging="True"
                AllowSorting="True"
                PageSize="3"               
                AllowMultiRowSelection="true"
                GridLines="None" 
                Skin="WebBlue"
                AutoGenerateColumns="False"
                OnPreRender="myTasksDG_PreRender">       
                <MasterTableView ShowFooter="True">              
                    <Columns>
                        <telerik:GridBoundColumn visible="True" datafield="TICK_ID" readonly="True" headertext="ID"></telerik:GridBoundColumn>
                        <telerik:GridBoundColumn visible="False" datafield="APP_LOCATION" readonly="True" headertext="ID"></telerik:GridBoundColumn>
                        <telerik:GridBoundColumn visible="True" datafield="APP_USER" readonly="True" headertext="Submitted By:"></telerik:GridBoundColumn>
                        <telerik:GridBoundColumn visible="True" datafield="APP_WORKER" readonly="True" headertext="Assigned To:"></telerik:GridBoundColumn>
                        <telerik:GridBoundColumn visible="True" datafield="APP_NAME" readonly="True" headertext="Form Type:"></telerik:GridBoundColumn>                                                                             
                   
                        <telerik:GridTemplateColumn HeaderText="Time in Que:">
                        <ItemTemplate>
                            <b><font Color="<%#DataBinder.Eval(Container.DataItem , "itemColor")%>"> <%#DataBinder.Eval(Container.DataItem , "TIME_IN_QUE")%></font></b>
                        </ItemTemplate>   
                        </telerik:GridTemplateColumn>  
                       
                        <telerik:GridTemplateColumn UniqueName="CheckBoxTemplateColumn">
                            <HeaderTemplate>
                             <asp:CheckBox id="headerChkbox" OnCheckedChanged="ToggleSelectedState" AutoPostBack="True" runat="server"></asp:CheckBox>
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:CheckBox id="CheckBox1" OnCheckedChanged="ToggleRowSelection" AutoPostBack="True" runat="server"></asp:CheckBox>
                            </ItemTemplate>
                        </telerik:GridTemplateColumn>

                       
                    </Columns>
                    </MasterTableView>
         
                    
                <PagerStyle Mode="NextPrevAndNumeric" />
                </telerik:RadGrid>










    protected void ToggleRowSelection(object sender, EventArgs e)
    {
        ((sender as CheckBox).Parent.Parent as GridItem).Selected = (sender as CheckBox).Checked;
    }

    protected void myTasksDG_ItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            e.Item.PreRender += new EventHandler(myTasksDG_ItemPreRender);
        }
    }

    private void myTasksDG_ItemPreRender(object sender, EventArgs e)
    {
        ((sender as GridDataItem)["CheckBoxTemplateColumn"].FindControl("CheckBox1") as CheckBox).Checked = (sender as GridDataItem).Selected;
    }

   

    protected void ToggleSelectedState(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in myTasksDG.MasterTableView.Items)
            {
                (dataItem.FindControl("CheckBox1") as CheckBox).Checked = true;
                dataItem.Selected = true;
            }
        }
        else
        {
            foreach (GridDataItem dataItem in myTasksDG.MasterTableView.Items)
            {
                (dataItem.FindControl("CheckBox1") as CheckBox).Checked = false;
                dataItem.Selected = false;
            }
        }
    }

    protected void myTasksDG_PreRender(object sender, EventArgs e)
    {
        string text = "Selected rows: " + myTasksDG.SelectedItems.Count;
        myTasksDG.Controls.Add(new LiteralControl(string.Format("<span style='color:yellow;font-weight:bolder;'>{0}</span>", text)));
    }

4 Answers, 1 is accepted

Sort by
0
Vlad
Telerik team
answered on 18 Jan 2008, 12:24 PM
Hi David,

Are you using NeedDataSource to bind the grid in your case?  Please visit this example for more info:
http://demos1x.telerik.com/aspnet/Grid/Examples/Programming/SelectRowWithCheckBox/DefaultCS.aspx

Regards,
Vlad
the Telerik team

Instantly find answers to your questions at the new Telerik Support Center
0
David
Top achievements
Rank 1
answered on 18 Jan 2008, 02:48 PM
I'm actually using a method I built to create the datasource, then using the following:

myTasksDG.DataSource = CreateMyTasks(checkedList);
myTasksDG.DataBind();

checkedList is a variable I pass that contains user selected filter elements.

CreateMyTasks returns a DataView.


0
Vlad
Telerik team
answered on 18 Jan 2008, 03:00 PM
Hello David,

Please use NeedDataSource to assign DataSource for the grid.

All the best,
Vlad
the Telerik team

Instantly find answers to your questions at the new Telerik Support Center
0
David
Top achievements
Rank 1
answered on 18 Jan 2008, 04:16 PM
Awesome, that worked perfectly, and I must say that is quite a cool feature.

thanks a bunch
~David
Tags
Grid
Asked by
David
Top achievements
Rank 1
Answers by
Vlad
Telerik team
David
Top achievements
Rank 1
Share this question
or