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

[Solved] Hierarchical grid - Child refresh causes the initial grid state

2 Answers 119 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Stas
Top achievements
Rank 2
Stas asked on 05 Nov 2009, 03:27 AM
Hi,
When I click on a child grid refresh button the whole grid is refreshed and returned to initial state instead of refreshing the child grid only. What could be aproblem.
Thank you,
p.s. Sorry for the long code. Please see below.
.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/fyd_h.master" AutoEventWireup="true" 
    CodeFile="Schools.aspx.cs" Inherits="ContentPages_Management_Schools" %> 
 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">  
    <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">  
        <AjaxSettings> 
            <telerik:AjaxSetting AjaxControlID="RadComboBoxOwner">  
                <UpdatedControls> 
                    <telerik:AjaxUpdatedControl ControlID="RadComboBoxOwner" /> 
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> 
                </UpdatedControls> 
            </telerik:AjaxSetting> 
            <telerik:AjaxSetting AjaxControlID="RadGrid1">  
                <UpdatedControls> 
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> 
                    <telerik:AjaxUpdatedControl ControlID="HiddenFieldGrid1" /> 
                </UpdatedControls> 
            </telerik:AjaxSetting> 
            <telerik:AjaxSetting AjaxControlID="RadAjaxManagerProxy1">  
                <UpdatedControls> 
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> 
                    <telerik:AjaxUpdatedControl ControlID="HiddenFieldGrid1" /> 
                </UpdatedControls> 
            </telerik:AjaxSetting> 
        </AjaxSettings> 
    </telerik:RadAjaxManagerProxy> 
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">  
 
        <script type="text/javascript">  
            function OnClientClose() {  
                $find("<%= RadAjaxManager.GetCurrent(this).ClientID %>").ajaxRequest('refreshGrid');  
            }  
        </script> 
 
    </telerik:RadCodeBlock> 
    <telerik:RadComboBox ID="RadComboBoxOwner" runat="server" DataSourceID="LinqOwner" 
        DataTextField="OrgName" DataValueField="OwnerID" AutoPostBack="true" AppendDataBoundItems="True" 
        OnDataBound="RadComboBoxOwner_DataBound" Width="300px" OnSelectedIndexChanged="RadComboBoxOwner_SelectedIndexChanged">  
        <Items> 
            <telerik:RadComboBoxItem runat="server" Text=" - Select Trust -" Value="-1" /> 
        </Items> 
        <CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation> 
    </telerik:RadComboBox> 
    <asp:LoginView ID="LoginView1" runat="server">  
        <RoleGroups> 
            <asp:RoleGroup Roles="Admin">  
                <ContentTemplate> 
                    &nbsp;&nbsp;&nbsp;<asp:LinkButton ID="LinkButtonTheme" runat="server" CausesValidation="False">Themes</asp:LinkButton> 
                    &nbsp;&nbsp;&nbsp;  
                    <asp:LinkButton ID="LinkButtonModule" runat="server" CausesValidation="False">Modules</asp:LinkButton> 
                    <telerik:RadToolTip ID="RadToolTipTheme" runat="server" RelativeTo="Element" Title="Theme Managment" 
                        HideEvent="ManualClose" ShowEvent="OnClick" TargetControlID="LinkButtonTheme">  
                        <telerik:RadGrid ID="RadGridTheme" runat="server" AllowPaging="True" DataSourceID="LinqTheme" 
                            GridLines="None" AutoGenerateColumns="False">  
                            <MasterTableView DataKeyNames="ThemeId" DataSourceID="LinqTheme" Name="Theme" CommandItemDisplay="Top" 
                                CommandItemSettings-AddNewRecordText="Add New Theme" AllowAutomaticDeletes="True" 
                                AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AllowFilteringByColumn="true">  
                                <RowIndicatorColumn> 
                                    <HeaderStyle Width="20px"></HeaderStyle> 
                                </RowIndicatorColumn> 
                                <CommandItemSettings AddNewRecordText="Add New Theme"></CommandItemSettings> 
                                <Columns> 
                                    <telerik:GridEditCommandColumn ButtonType="ImageButton">  
                                    </telerik:GridEditCommandColumn> 
                                    <telerik:GridBoundColumn DataField="ThemeId" DataType="System.Int32" HeaderText="ThemeId" 
                                        ReadOnly="True" SortExpression="ThemeId" UniqueName="ThemeId" Display="False">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="Name" HeaderText="Name" SortExpression="Name" 
                                        UniqueName="Name" AutoPostBackOnFilter="True" CurrentFilterFunction="Contains">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="Are you sure you want to Delete?" 
                                        Text="Delete" UniqueName="DeleteTheme">  
                                    </telerik:GridButtonColumn> 
                                </Columns> 
                                <EditFormSettings> 
                                    <EditColumn ButtonType="ImageButton">  
                                    </EditColumn> 
                                </EditFormSettings> 
                            </MasterTableView> 
                        </telerik:RadGrid> 
                    </telerik:RadToolTip> 
                    <telerik:RadToolTip ID="RadToolTipModule" runat="server" HideEvent="ManualClose" 
                        RelativeTo="Element" ShowEvent="OnClick" TargetControlID="LinkButtonModule" Title="Module Management">  
                        <telerik:RadGrid ID="RadGridModule" runat="server" AllowPaging="True" DataSourceID="LinqModule" 
                            GridLines="None" AutoGenerateColumns="False">  
                            <MasterTableView DataKeyNames="ModuleId" DataSourceID="LinqModule" Name="Module" 
                                CommandItemDisplay="Top" CommandItemSettings-AddNewRecordText="Add New Module" 
                                AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" 
                                AllowFilteringByColumn="True">  
                                <RowIndicatorColumn> 
                                    <HeaderStyle Width="20px"></HeaderStyle> 
                                </RowIndicatorColumn> 
                                <CommandItemSettings AddNewRecordText="Add New Module"></CommandItemSettings> 
                                <Columns> 
                                    <telerik:GridEditCommandColumn ButtonType="ImageButton">  
                                    </telerik:GridEditCommandColumn> 
                                    <telerik:GridBoundColumn DataField="ModuleId" DataType="System.Int32" HeaderText="ModuleId" 
                                        ReadOnly="True" SortExpression="ModuleId" UniqueName="ModuleId" ForceExtractValue="Always" 
                                        Display="False">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="Name" HeaderText="Module" SortExpression="Name" 
                                        UniqueName="ModuleName" AutoPostBackOnFilter="True" CurrentFilterFunction="Contains">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="Are you sure you want to Delete?" 
                                        Text="Delete" UniqueName="DeleteModule">  
                                    </telerik:GridButtonColumn> 
                                </Columns> 
                                <EditFormSettings> 
                                    <EditColumn ButtonType="ImageButton">  
                                    </EditColumn> 
                                </EditFormSettings> 
                            </MasterTableView> 
                        </telerik:RadGrid> 
                    </telerik:RadToolTip> 
                </ContentTemplate> 
            </asp:RoleGroup> 
        </RoleGroups> 
    </asp:LoginView> 
    <telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" 
        AutoGenerateColumns="False" GroupingEnabled="False" OnDetailTableDataBind="RadGrid1_DetailTableDataBind" 
        GridLines="None" OnItemCommand="RadGrid1_ItemCommand"   
    OnItemDataBound="RadGrid1_ItemDataBound" ShowFooter="True" ShowStatusBar="True">  
        <ExportSettings FileName="SchoolExport" IgnorePaging="True" OpenInNewWindow="True">  
        </ExportSettings> 
        <ValidationSettings ValidationGroup="School" /> 
        <MasterTableView DataKeyNames="OrgID" Name="School" AllowFilteringByColumn="True" 
            AllowPaging="True" CommandItemDisplay="Top" AllowSorting="True" InsertItemPageIndexAction="ShowItemOnCurrentPage">  
            <RowIndicatorColumn> 
                <HeaderStyle Width="20px" /> 
            </RowIndicatorColumn> 
            <DetailTables> 
                <telerik:GridTableView runat="server" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" 
                    AllowAutomaticUpdates="True" AllowSorting="True" Caption="&lt;hr /&gt; School Ethnithity" 
                    CommandItemDisplay="Top" DataKeyNames="SchoolEthnicityId,SchoolId" DataSourceID="LinqSchoolEthnicity" 
                    Name="School Ethnithity" PageSize="16">  
                    <ParentTableRelation> 
                        <telerik:GridRelationFields DetailKeyField="SchoolId" MasterKeyField="OrgID" /> 
                    </ParentTableRelation> 
                    <CommandItemSettings AddNewRecordText="Add New Ethnicity" /> 
                    <RowIndicatorColumn> 
                        <HeaderStyle Width="20px" /> 
                    </RowIndicatorColumn> 
                    <ExpandCollapseColumn> 
                        <HeaderStyle Width="20px" /> 
                    </ExpandCollapseColumn> 
                    <Columns> 
                        <telerik:GridEditCommandColumn ButtonType="ImageButton">  
                        </telerik:GridEditCommandColumn> 
                        <telerik:GridBoundColumn AllowFiltering="False" DataField="SchoolEthnicityId" DataType="System.Int32" 
                            HeaderText="Id" ReadOnly="True" SortExpression="SchoolEthnicityId" UniqueName="SchoolEthnicityId">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridDropDownColumn DataField="EthnicityId" DataSourceID="LinqEthnicity" 
                            DataType="System.Int32" HeaderText="Ethnicity" ListTextField="Ethnicity" ListValueField="EthnicityID" 
                            SortExpression="EthnicityId" UniqueName="SchoolEthnicity">  
                        </telerik:GridDropDownColumn> 
                        <telerik:GridNumericColumn DataField="Percentage" DataType="System.Int32" HeaderText="Percentage" 
                            NumericType="Percent" SortExpression="Percentage" UniqueName="Percentage">  
                        </telerik:GridNumericColumn> 
                        <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="Are you sure you want to Delete?" 
                            ConfirmTitle="Delete the School Ethnicity" Text="Delete" UniqueName="DeleteEthnicity">  
                        </telerik:GridButtonColumn> 
                    </Columns> 
                    <EditFormSettings> 
                        <EditColumn UniqueName="EditEthnithity">  
                        </EditColumn> 
                    </EditFormSettings> 
                </telerik:GridTableView> 
                <telerik:GridTableView runat="server" Name="Course" AllowFilteringByColumn="True" 
                    DataKeyNames="CourseID,SchoolID" AllowCustomPaging="False" AllowSorting="True" 
                    AllowPaging="True" Caption="&lt;hr /&gt;COURSE" CommandItemDisplay="Top">  
                    <RowIndicatorColumn> 
                        <HeaderStyle Width="20px" /> 
                    </RowIndicatorColumn> 
                    <ExpandCollapseColumn Visible="True">  
                    </ExpandCollapseColumn> 
                    <DetailTables> 
                        <telerik:GridTableView runat="server" Caption="&lt;hr /&gt;COURSE - SURVEY" DataKeyNames="VoterID" 
                            Name="Course Survey" CommandItemDisplay="Top">  
                            <RowIndicatorColumn> 
                                <HeaderStyle Width="20px" /> 
                            </RowIndicatorColumn> 
                            <ExpandCollapseColumn> 
                                <HeaderStyle Width="20px" /> 
                            </ExpandCollapseColumn> 
                            <CommandItemSettings AddNewRecordText="Add New Survey" /> 
                            <Columns> 
                                <telerik:GridBoundColumn DataField="VoterID" DataType="System.Int32" HeaderText="VoterID" 
                                    ReadOnly="True" SortExpression="VoterID" UniqueName="cVoterID">  
                                </telerik:GridBoundColumn> 
                                <telerik:GridHyperLinkColumn DataTextField="Title" SortExpression="Title" Target="_blank" 
                                    UniqueName="CourseSurvey" DataNavigateUrlFields="VoterID" DataNavigateUrlFormatString="~/ContentPages/VoterAnswerReport_NoMaster.aspx?voterId={0}" 
                                    HeaderText="Survey">  
                                </telerik:GridHyperLinkColumn> 
                                <telerik:GridBoundColumn DataField="VoterDate" DataType="System.DateTime" HeaderText="VoterDate" 
                                    ReadOnly="True" SortExpression="VoterDate" UniqueName="cVoterDate">  
                                </telerik:GridBoundColumn> 
                                <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="Are you sure you want to Delete?" 
                                    ConfirmTitle="Delete Survey" Text="Delete" UniqueName="cDeleteSurvey">  
                                </telerik:GridButtonColumn> 
                            </Columns> 
                            <EditFormSettings> 
                                <EditColumn UniqueName="EditCourseSurvey">  
                                </EditColumn> 
                            </EditFormSettings> 
                        </telerik:GridTableView> 
                    </DetailTables> 
                    <CommandItemSettings AddNewRecordText="Add New Course" /> 
                    <Columns> 
                        <telerik:GridEditCommandColumn ButtonType="ImageButton">  
                        </telerik:GridEditCommandColumn> 
                        <telerik:GridBoundColumn DataField="CourseID" DataType="System.Int32" HeaderText="ID" 
                            ForceExtractValue="Always" ReadOnly="True" SortExpression="CourseID" UniqueName="CourseID" 
                            AllowFiltering="False">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="CourseName" HeaderText="Course" SortExpression="CourseName" 
                            UniqueName="CourseName" AutoPostBackOnFilter="True" CurrentFilterFunction="Contains" 
                            ReadOnly="True">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridDateTimeColumn DataField="StartDate" DataFormatString="{0:d}" DataType="System.DateTime" 
                            HeaderText="Start Date" SortExpression="StartDate" UniqueName="StartDate" AutoPostBackOnFilter="True" 
                            CurrentFilterFunction="EqualTo">  
                        </telerik:GridDateTimeColumn> 
                        <telerik:GridDateTimeColumn DataField="GraduationDate" DataFormatString="{0:d}" DataType="System.DateTime" 
                            HeaderText="Finish Date" SortExpression="GraduationDate" UniqueName="FinishDate" 
                            AutoPostBackOnFilter="True" CurrentFilterFunction="EqualTo">  
                        </telerik:GridDateTimeColumn> 
                        <telerik:GridDropDownColumn DataField="ProgramId" DataSourceID="LinqProgrames" HeaderText="Programme" 
                            ListTextField="ProgramName" ListValueField="ProgramId" UniqueName="CourseProgramme">  
                        </telerik:GridDropDownColumn> 
                        <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" Text="Delete" 
                            UniqueName="DeleteCourse" ConfirmText="Are you sure you want to Delete?" ConfirmTitle="Delete Course">  
                        </telerik:GridButtonColumn> 
                    </Columns> 
                    <EditFormSettings> 
                        <EditColumn UniqueName="EditCourse">  
                        </EditColumn> 
                    </EditFormSettings> 
                </telerik:GridTableView> 
                <telerik:GridTableView runat="server" Name="Term" DataKeyNames="TermId" CommandItemDisplay="Top" 
                    Caption="&lt;hr /&gt;TERMS" Summary="Kiwi Can">  
                    <RowIndicatorColumn> 
                        <HeaderStyle Width="20px" /> 
                    </RowIndicatorColumn> 
                    <ExpandCollapseColumn> 
                        <HeaderStyle Width="20px" /> 
                    </ExpandCollapseColumn> 
                    <DetailTables> 
                        <telerik:GridTableView runat="server" Caption="&lt;hr /&gt;TERMS - SURVEY" DataKeyNames="VoterID" 
                            Name="Term Survey" CommandItemDisplay="Top">  
                            <RowIndicatorColumn> 
                                <HeaderStyle Width="20px" /> 
                            </RowIndicatorColumn> 
                            <ExpandCollapseColumn> 
                                <HeaderStyle Width="20px" /> 
                            </ExpandCollapseColumn> 
                            <CommandItemSettings AddNewRecordText="Add New Survey" /> 
                            <Columns> 
                                <telerik:GridBoundColumn DataField="VoterID" DataType="System.Int32" HeaderText="VoterID" 
                                    ReadOnly="True" SortExpression="VoterID" UniqueName="tVoterID">  
                                </telerik:GridBoundColumn> 
                                <telerik:GridHyperLinkColumn DataTextField="Title" SortExpression="Title" Target="_blank" 
                                    UniqueName="TermSurvey" DataNavigateUrlFields="VoterID" DataNavigateUrlFormatString="~/ContentPages/VoterAnswerReport_NoMaster.aspx?voterId={0}" 
                                    HeaderText="Survey">  
                                </telerik:GridHyperLinkColumn> 
                                <telerik:GridBoundColumn DataField="VoterDate" DataType="System.DateTime" HeaderText="VoterDate" 
                                    ReadOnly="True" SortExpression="VoterDate" UniqueName="tVoterDate">  
                                </telerik:GridBoundColumn> 
                                <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="Are you sure you want to Delete?" 
                                    ConfirmTitle="Delete Survey" Text="Delete" UniqueName="tDeleteSurvey">  
                                </telerik:GridButtonColumn> 
                            </Columns> 
                            <EditFormSettings> 
                                <EditColumn UniqueName="EditTermSurvey">  
                                </EditColumn> 
                            </EditFormSettings> 
                        </telerik:GridTableView> 
                    </DetailTables> 
                    <CommandItemSettings AddNewRecordText="Add New Term"></CommandItemSettings> 
                    <Columns> 
                        <telerik:GridEditCommandColumn ButtonType="ImageButton">  
                        </telerik:GridEditCommandColumn> 
                        <telerik:GridBoundColumn AllowFiltering="False" DataField="TermId" DataType="System.Int32" 
                            HeaderText="TermId" ReadOnly="True" UniqueName="TermId" ForceExtractValue="Always">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn AutoPostBackOnFilter="True" CurrentFilterFunction="Contains" 
                            DataField="Term" HeaderText="Term" SortExpression="Term" UniqueName="Term" ReadOnly="True">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridTemplateColumn DataField="Suffix" DataType="System.Int32" Display="False" 
                            ForceExtractValue="InEditMode" HeaderText="Suffix" UniqueName="Suffix" EditFormHeaderTextFormat="Term:" 
                            SortExpression="Suffix">  
                            <EditItemTemplate> 
                                <telerik:RadComboBox ID="SuffixRadComboBox" runat="server" SelectedValue='<%# Bind("Suffix") %>'>  
                                    <Items> 
                                        <telerik:RadComboBoxItem runat="server" Text="1" Value="1" /> 
                                        <telerik:RadComboBoxItem runat="server" Text="2" Value="2" /> 
                                        <telerik:RadComboBoxItem runat="server" Text="3" Value="3" /> 
                                        <telerik:RadComboBoxItem runat="server" Text="4" Value="4" /> 
                                    </Items> 
                                </telerik:RadComboBox> 
                            </EditItemTemplate> 
                            <ItemTemplate> 
                                <asp:Label ID="SuffixLabel" runat="server" Text='<%# Eval("Suffix") %>'></asp:Label> 
                            </ItemTemplate> 
                        </telerik:GridTemplateColumn> 
                        <telerik:GridDropDownColumn DataField="Year" DataSourceID="LinqYear" DataType="System.Int32" 
                            Display="False" HeaderText="Year" UniqueName="Year">  
                        </telerik:GridDropDownColumn> 
                        <telerik:GridBoundColumn DataField="ThemeId" DataType="System.UInt32" Display="False" 
                            ForceExtractValue="Always" ReadOnly="True" UniqueName="ThemeId" HeaderText="ThemeId">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridDropDownColumn AutoPostBackOnFilter="true" DataSourceID="LinqTheme" 
                            UniqueName="Theme" DataField="ThemeId" ListValueField="ThemeId" CurrentFilterFunction="Contains" 
                            ListTextField="Name" HeaderText="Theme">  
                        </telerik:GridDropDownColumn> 
                        <telerik:GridTemplateColumn HeaderText="Modules" UniqueName="Modules" EditFormColumnIndex="1" 
                            SortExpression="Modules">  
                            <EditItemTemplate> 
                                <asp:CheckBoxList ID="CheckBoxList2" runat="server" DataSourceID="LinqModule" DataTextField="Name" 
                                    DataValueField="ModuleId" RepeatColumns="4">  
                                </asp:CheckBoxList> 
                            </EditItemTemplate> 
                            <ItemTemplate> 
                                <asp:Label runat="server" Text='<%# Eval("Modules") %>'></asp:Label> 
                            </ItemTemplate> 
                        </telerik:GridTemplateColumn> 
                        <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="Are you sure you want Delete?" 
                            ConfirmTitle="Delete Term" Text="Delete" UniqueName="DeleteTerm">  
                        </telerik:GridButtonColumn> 
                    </Columns> 
                    <EditFormSettings ColumnNumber="2">  
                        <EditColumn UniqueName="EditTerm">  
                        </EditColumn> 
                    </EditFormSettings> 
                </telerik:GridTableView> 
            </DetailTables> 
            <CommandItemSettings AddNewRecordText="Add New School"></CommandItemSettings> 
            <ExpandCollapseColumn Visible="True">  
            </ExpandCollapseColumn> 
            <Columns> 
                <telerik:GridEditCommandColumn ButtonType="ImageButton">  
                </telerik:GridEditCommandColumn> 
                <telerik:GridBoundColumn DataField="OrgID" DataType="System.Int32" HeaderText="ID" 
                    ReadOnly="True" SortExpression="OrgID" UniqueName="OrgID" AutoPostBackOnFilter="True" 
                    ForceExtractValue="Always" FilterControlWidth="30px">  
                </telerik:GridBoundColumn> 
                <telerik:GridTemplateColumn DataField="OrgName" HeaderText="School" SortExpression="OrgName" 
                    UniqueName="OrgName" Display="False">  
                    <EditItemTemplate> 
                        <asp:TextBox ID="OrgNameTextBox" runat="server" Text='<%# Bind("OrgName") %>'></asp:TextBox> 
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="OrgNameTextBox" 
                            ErrorMessage="School Name" ValidationGroup="School">*</asp:RequiredFieldValidator> 
                    </EditItemTemplate> 
                    <ItemTemplate> 
                        <asp:Label ID="OrgNameLabel" runat="server" Text='<%# Eval("OrgName") %>'></asp:Label> 
                    </ItemTemplate> 
                </telerik:GridTemplateColumn> 
                <telerik:GridHyperLinkColumn DataNavigateUrlFields="OrgName" AutoPostBackOnFilter="True" 
                    DataTextField="OrgName" Target="_blank" UniqueName="WebInfo" HeaderText="School" 
                    DataNavigateUrlFormatString="http://www.tki.org.nz/e/schools/simple_search.php?ss_search_type=contain&ss_search_string={0}" 
                    DataTextFormatString="{0}" CurrentFilterFunction="Contains" HeaderTooltip="Click school name for more details" 
                    SortExpression="OrgName">  
                </telerik:GridHyperLinkColumn> 
                <telerik:GridNumericColumn AutoPostBackOnFilter="True" CurrentFilterFunction="EqualTo" 
                    DataField="Decile" DataType="System.Int32" HeaderText="Decile" SortExpression="Decile" 
                    UniqueName="Decile" FilterControlWidth="30px">  
                </telerik:GridNumericColumn> 
                <telerik:GridNumericColumn AutoPostBackOnFilter="True" CurrentFilterFunction="GreaterThan" 
                    DataField="Enrol" DataType="System.Int32" HeaderText="Enrol" SortExpression="Enrol" 
                    UniqueName="Enrol" FilterControlWidth="30px">  
                </telerik:GridNumericColumn> 
                <telerik:GridTemplateColumn AutoPostBackOnFilter="True" CurrentFilterFunction="Contains" 
                    DataField="Type" HeaderText="Type" SortExpression="Type" UniqueName="SchoolType">  
                    <EditItemTemplate> 
                        <telerik:RadComboBox ID="TypeRadComboBox" runat="server" AllowCustomText="True" DataSourceID="LinqSchoolType" 
                            DataTextField="Type" DataValueField="Type" SelectedValue='<%# Bind("Type") %>'>  
                        </telerik:RadComboBox> 
                    </EditItemTemplate> 
                    <ItemTemplate> 
                        <asp:Label runat="server" Text='<%# Eval("Type") %>'></asp:Label> 
                    </ItemTemplate> 
                </telerik:GridTemplateColumn> 
                <telerik:GridTemplateColumn AutoPostBackOnFilter="True" DataField="PersonName" ReadOnly="true" 
                    HeaderText="Principal Name" SortExpression="PersonName" UniqueName="PersonName">  
                    <ItemTemplate> 
                        <asp:LinkButton ID="LinkButtonPrincipal" runat="server" OnClientClick='<%# String.Format("radopen(\"peopleOrg.aspx?anybodyId={0}&orgId={1}&ownerId={2}\",\"RadWindow1\");", Eval("PersonId"),Eval("OrgID"),ownerId) %>' 
                            Text='<%# String.IsNullOrEmpty((String)Eval("PersonName")) ? "Add Principal" : (String)Eval("PersonName") %>' 
                            ToolTip="Click to View, Edit or Add"></asp:LinkButton> 
                    </ItemTemplate> 
                </telerik:GridTemplateColumn> 
                <telerik:GridBoundColumn DataField="AddressLine1" HeaderText="Address Line1" SortExpression="AddressLine1" 
                    AutoPostBackOnFilter="True" UniqueName="AddressLine1" EditFormColumnIndex="1" 
                    Display="False" ConvertEmptyStringToNull="False">  
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="AddressLine2" HeaderText="Line2" SortExpression="AddressLine2" 
                    AutoPostBackOnFilter="True" UniqueName="AddressLine2" EditFormColumnIndex="1" 
                    ConvertEmptyStringToNull="False" Display="False">  
                </telerik:GridBoundColumn> 
                <telerik:GridTemplateColumn DataField="City" HeaderText="City" SortExpression="City" 
                    AutoPostBackOnFilter="True" UniqueName="City" EditFormColumnIndex="1" Display="False">  
                    <EditItemTemplate> 
                        <asp:TextBox ID="CityTextBox" runat="server" Text='<%# Bind("City") %>'></asp:TextBox> 
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="CityTextBox" 
                            ErrorMessage="City" ValidationGroup="School" Display="Dynamic">*</asp:RequiredFieldValidator> 
                    </EditItemTemplate> 
                    <ItemTemplate> 
                        <asp:Label ID="CityLabel" runat="server" Text='<%# Eval("City") %>'></asp:Label> 
                    </ItemTemplate> 
                </telerik:GridTemplateColumn> 
                <telerik:GridBoundColumn DataField="PostCode" Display="False" HeaderText="PostCode" 
                    ConvertEmptyStringToNull="False" UniqueName="PostCode" EditFormColumnIndex="1">  
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="AddressPhysical" HeaderText="Address Physical" 
                    AutoPostBackOnFilter="True" SortExpression="AddressPhysical" UniqueName="AddressPhysical" 
                    ReadOnly="True">  
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="POBox" HeaderText="POBox" SortExpression="POBox" 
                    UniqueName="POBox" EditFormColumnIndex="1" Display="False" ConvertEmptyStringToNull="False">  
                </telerik:GridBoundColumn> 
                <telerik:GridMaskedColumn DataField="PhoneWork" HeaderText="Phone Work" SortExpression="PhoneWork" 
                    ConvertEmptyStringToNull="False" UniqueName="PhoneWork" Display="False" Mask="## ### #### a ######" 
                    EditFormColumnIndex="2">  
                </telerik:GridMaskedColumn> 
                <telerik:GridMaskedColumn DataField="Mobile" HeaderText="Mobile" SortExpression="Mobile" 
                    ConvertEmptyStringToNull="False" UniqueName="Mobile" Display="False" Mask="### ### ####" 
                    EditFormColumnIndex="2">  
                </telerik:GridMaskedColumn> 
                <telerik:GridBoundColumn DataField="Fax" HeaderText="Fax" SortExpression="Fax" UniqueName="Fax" 
                    ConvertEmptyStringToNull="False" AutoPostBackOnFilter="True" EditFormColumnIndex="2" 
                    Display="False">  
                </telerik:GridBoundColumn> 
                <telerik:GridTemplateColumn DataField="Email" EditFormColumnIndex="2" AutoPostBackOnFilter="True" 
                    ConvertEmptyStringToNull="False" HeaderText="Email" SortExpression="Email" UniqueName="Email">  
                    <EditItemTemplate> 
                        <asp:TextBox ID="EmailTextBox" runat="server" Text='<%# Bind("Email") %>'></asp:TextBox> 
                        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="EmailTextBox" 
                            ErrorMessage="People" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*</asp:RegularExpressionValidator> 
                    </EditItemTemplate> 
                    <ItemTemplate> 
                        <asp:HyperLink ID="EmailHyperLink" runat="server" Text='<%# Eval("Email") %>' NavigateUrl='<%# String.Format("mailto:{0}", Eval("Email")) %>' /> 
                    </ItemTemplate> 
                </telerik:GridTemplateColumn> 
                <telerik:GridBoundColumn DataField="Programmes" HeaderText="Programmes" ReadOnly="True" 
                    UniqueName="SchoolProgrammes">  
                </telerik:GridBoundColumn> 
                <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" Text="Delete" 
                    UniqueName="DeleteSchool" ConfirmText="Are you sure you want to DELETE?" ConfirmTitle="Delete School">  
                </telerik:GridButtonColumn> 
            </Columns> 
            <EditFormSettings ColumnNumber="3">  
                <EditColumn UniqueName="EditSchool">  
                </EditColumn> 
                <PopUpSettings ScrollBars="None"></PopUpSettings> 
            </EditFormSettings> 
            <PagerStyle Mode="NextPrevNumericAndAdvanced" /> 
        </MasterTableView> 
    </telerik:RadGrid> 
    <telerik:RadWindowManager ID="RadWindowManager1" runat="server">  
        <Windows> 
            <telerik:RadWindow ID="RadWindow1" runat="server" Modal="true" OnClientClose="OnClientClose" 
                AutoSize="True" /> 
        </Windows> 
    </telerik:RadWindowManager> 
    <asp:LinqDataSource ID="LinqOwner" runat="server" OnSelecting="LinqOwner_Selecting">  
    </asp:LinqDataSource> 
    <asp:LinqDataSource ID="LinqSchoolEthnicity" runat="server" ContextTypeName="FYDEvlDataContext" 
        EnableDelete="True" EnableInsert="True" EnableUpdate="True" TableName="tblSchoolEthnicities" 
        Where="SchoolId == @SchoolId">  
        <WhereParameters> 
            <asp:SessionParameter DefaultValue="-1" Name="SchoolId" SessionField="OrgID" Type="Int32" /> 
        </WhereParameters> 
    </asp:LinqDataSource> 
    <asp:LinqDataSource ID="LinqSchoolType" runat="server" OnSelecting="LinqSchoolType_Selecting">  
    </asp:LinqDataSource> 
    <asp:LinqDataSource ID="LinqEthnicity" runat="server" ContextTypeName="FYDEvlDataContext" 
        OrderBy="Ethnicity" Select="new (EthnicityID, Ethnicity)" TableName="tblEthnicities">  
    </asp:LinqDataSource> 
    <asp:LinqDataSource ID="LinqTheme" runat="server" ContextTypeName="FYDEvlDataContext" 
        EnableDelete="True" EnableInsert="True" EnableUpdate="True" OrderBy="Name" TableName="tblThemes">  
    </asp:LinqDataSource> 
    <asp:LinqDataSource ID="LinqTerm" runat="server" ContextTypeName="FYDEvlDataContext" 
        OrderBy="Name" TableName="tblTerms">  
    </asp:LinqDataSource> 
    <asp:LinqDataSource ID="LinqProgrames" runat="server" OnSelecting="LinqProgrames_Selecting">  
    </asp:LinqDataSource> 
    <asp:LinqDataSource ID="LinqModule" runat="server" ContextTypeName="FYDEvlDataContext" 
        EnableDelete="True" EnableInsert="True" EnableUpdate="True" OrderBy="Name" TableName="tblModules">  
    </asp:LinqDataSource> 
    <asp:LinqDataSource ID="LinqYear" runat="server" OnSelecting="LinqYear_Selecting">  
    </asp:LinqDataSource> 
    <asp:HiddenField ID="HiddenFieldGrid1" runat="server" /> 
</asp:Content> 
 
.aspx.cs
using System;  
using System.Collections;  
using System.Collections.Generic;  
using System.Data.SqlClient;  
using System.Globalization;  
using System.Linq;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using Telerik.Web.UI;  
 
public partial class ContentPages_Management_Schools : System.Web.UI.Page  
{  
    private FYDEvlDataContext db;  
    protected int ownerId  
    {  
        get 
        {  
            if (RadComboBoxOwner.Visible)  
            {  
                return int.Parse(RadComboBoxOwner.SelectedValue);  
            }  
            else 
            {  
                return Profile.UserData.OwnerID;  
            }  
        }  
    }  
    private int orgIdEdit(GridCommandEventArgs e)  
    {  
        GridDataItem parentItem = e.Item.OwnerTableView.ParentItem;  
        return Int32.Parse(parentItem.OwnerTableView.DataKeyValues[parentItem.ItemIndex]["OrgID"].ToString());  
    }  
    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)  
    {  
        if (e.Argument.ToString().Equals("refreshGrid") && !String.IsNullOrEmpty(HiddenFieldGrid1.Value))  
        {  
            GridTableView tableView;  
            tableView = this.Page.FindControl(HiddenFieldGrid1.Value) as GridTableView;  
            tableView.Rebind();  
            HiddenFieldGrid1.Value = String.Empty;  
        }  
    }  
    protected void Page_Load(object sender, EventArgs e)  
    {  
        RadAjaxManager manager = RadAjaxManager.GetCurrent(Page);  
        manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(RadAjaxManager1_AjaxRequest);  
        if (!IsPostBack)  
        {  
            if (User.IsInRole("Admin"))  
            {  
                RadComboBoxOwner.Visible = true;  
            }  
            else 
            {  
                RadComboBoxOwner.Visible = false;  
            }  
        }  
    }
    #region Grid  
 
    protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)  
    {  
        if (!e.IsFromDetailTable)  
        {  
            db = new FYDEvlDataContext();  
            RadGrid1.DataSource = db.GetSchoolByOwner(ownerId);  
        }  
    }  
    protected void RadGrid1_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)  
    {  
        GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;  
        db = new FYDEvlDataContext();  
        List<int> ownerInProgrammes = new List<int>(db.tblOwnerInProgrammes.Where(op => op.OwnerID.Equals(ownerId)).Select(op => op.tblProgram.ProgramID).ToArray<int>());  
        switch (e.DetailTableView.Name)  
        {  
            case "Course":  
                e.DetailTableView.DataSource = db.tblCourses.Where(c => c.SchoolID.Equals(Int32.Parse(dataItem.GetDataKeyValue("OrgID").ToString()))).Select(c => new { c.CourseID, c.CourseName, c.CourseSuffix, c.CourseYear, c.CreatedDate, c.GraduationDate, c.Graduated, c.ProgramId, c.SchoolID, c.StartDate, c.tblProgram.ProgramName }).OrderByDescending(c => c.CourseYear).ThenBy(c => c.CourseName);  
                break;  
            case "Course Survey":  
                if (ownerInProgrammes.Contains(1) | ownerInProgrammes.Contains(4)) // 1-Stars 4-KiwiCan  
                {  
                    e.DetailTableView.DataSource = db.tblpkVoters.Where(v => v.CourseId.Equals(Int32.Parse(dataItem.GetDataKeyValue("CourseID").ToString()))).Select(v => new { v.VoterID, v.SurveyID, v.vts_tbSurvey.Title, v.VoterDate });  
                    e.DetailTableView.Visible = true;  
                }  
                else 
                {  
                    e.DetailTableView.Visible = false;  
                }  
                break;  
            case "Term":  
                if (db.tblOwnerInProgrammes.Where(op => op.OwnerID.Equals(ownerId)).Select(op => op.tblProgram.ProgramName).Contains("Kiwi Can"))  
                {  
                    e.DetailTableView.DataSource = db.tblTerms.Where(t => t.OrganisationId.Equals(Int32.Parse(dataItem.GetDataKeyValue("OrgID").ToString()))).Select(t => new { t.TermId, Term = t.Name, t.Suffix, t.Year, ThemeId = t.tblTermThemeModules.Select(ttm => ttm.ThemeId).FirstOrDefault(), Theme = t.tblTermThemeModules.Select(ttm => ttm.tblTheme.Name).FirstOrDefault(), Modules = ConvertArray.ArrayToString(db.tblModules.Where(m => m.tblTermThemeModules.Any(ttm => ttm.TermId.Equals(t.TermId))).Select(m => m.Name).ToList(), "<br />") }).AsEnumerable().Distinct();  
                    e.DetailTableView.Visible = true;  
                }  
                else 
                {  
                    e.DetailTableView.Visible = false;  
                }  
                break;  
            case "Term Survey":  
                if (ownerInProgrammes.Contains(4)) // 4-KiwiCan  
                {  
                    e.DetailTableView.DataSource = db.tblpkVoters.Where(v => v.TermId.Equals(Int32.Parse(dataItem.GetDataKeyValue("TermId").ToString()))).Select(v => new { v.VoterID, v.SurveyID, v.vts_tbSurvey.Title, v.VoterDate });  
                    e.DetailTableView.Visible = true;  
                }  
                else 
                {  
                    e.DetailTableView.Visible = false;  
                }  
                break;  
        }  
    }  
    protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)  
    {  
        GridDataItem parentItem = e.Item.OwnerTableView.ParentItem;  
        if (!String.IsNullOrEmpty(RadGrid1.MasterTableView.Caption))  
        {  
            RadGrid1.MasterTableView.Caption = "";  
        }  
        //Single expand in hierarchical grid  
        if (e.CommandName == RadGrid.ExpandCollapseCommandName)  
        {  
            foreach (GridItem item in e.Item.OwnerTableView.Items)  
            {  
                if (item.Expanded && item != e.Item)  
                {  
                    item.Expanded = false;  
                }  
            }  
        }  
        if (e.CommandName.Equals(RadGrid.InitInsertCommandName))  
        {  
            if (e.Item.OwnerTableView.Items.Count.Equals(0))  
            {  
                e.Canceled = true;  
                // If grid is empty  
                // http://www.telerik.com/community/forums/aspnet/grid/insert-new-record-into-empty-grid.aspx  
                //Prepare an IDictionary with the predefined values     
                System.Collections.Specialized.ListDictionary newVal = new System.Collections.Specialized.ListDictionary();  
                newVal["ThemeId"] = "1";  
                newVal["Suffix"] = "1";  
                newVal["Year"] = DateTime.Now.Year;  
                e.Item.OwnerTableView.InsertItem(newVal);  
            }  
 
            switch (e.Item.OwnerTableView.Name)  
            {  
                case "Course Survey":  
                    {  
                        e.Canceled = true;  
 
                        HiddenFieldGrid1.Value = e.Item.OwnerID.Replace("_""$");  
                        string navigateUrl = string.Format("'SchoolCourseSurveyBox.aspx?SurveyList=Stars&courseId={0}&pkuId={1}'",  
                                            Int32.Parse(parentItem.GetDataKeyValue("CourseID").ToString()),  
                                            Int32.Parse(parentItem.OwnerTableView.ParentItem.GetDataKeyValue("OrgID").ToString()));  
                        RadAjaxManager.GetCurrent(Page).ResponseScripts.Add("window.radopen(" + navigateUrl + ",'RadWindow1')");  
                    }  
                    break;  
                case "Term Survey":  
                    {  
                        e.Canceled = true;  
                        HiddenFieldGrid1.Value = e.Item.OwnerID.Replace("_""$");  
                        string navigateUrl = string.Format("'SchoolCourseSurveyBox.aspx?SurveyList=KiwiCan&termId={0}&pkuId={1}'",  
                                            Int32.Parse(parentItem.GetDataKeyValue("TermId").ToString()),  
                                            Int32.Parse(parentItem.OwnerTableView.ParentItem.GetDataKeyValue("OrgID").ToString()));  
                        RadAjaxManager.GetCurrent(Page).ResponseScripts.Add("window.radopen(" + navigateUrl + ",'RadWindow1')");  
                    }  
                    break;  
            }  
        }  
        if (e.Item is GridEditableItem)  
        {  
            List<string> userRoles = Roles.GetRolesForUser(User.Identity.Name).ToList();  
            if (  
                (!userRoles.Any(ur => ur.Contains("Admin") | ur.Contains("Power Users"))) &&  
                (e.CommandName.Equals(RadGrid.EditCommandName) | e.CommandName.Equals(RadGrid.DeleteCommandName) | e.CommandName.Equals(RadGrid.InitInsertCommandName)) &&  
                (e.Item.OwnerTableView.Name.Equals("School") | e.Item.OwnerTableView.Name.Equals("Course") | e.Item.OwnerTableView.Name.Equals("Term"))  
                )  
            {  
                e.Canceled = true;  
                RadGrid1.MasterTableView.Caption = "<span style='color: #008000'>You don't have appropriate permission to perform this operation</span>";  
            }  
 
            Page.Validate("School");  
            if (Page.IsValid)  
            {  
                db = new FYDEvlDataContext();  
                if (e.Item.IsInEditMode && (e.CommandName.Equals(RadGrid.PerformInsertCommandName) | e.CommandName.Equals(RadGrid.UpdateCommandName)))  
                {  
                    GridEditableItem editedItem = e.Item as GridEditableItem;  
                    Hashtable newValues = new Hashtable();  
                    e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);  
                    //Hashtable newValues = new Hashtable();  
                    //foreach (DictionaryEntry item in gridValues)  
                    //{  
                    //    newValues[item.Key.ToString()] = item.Value != null ? item.Value : "";  
                    //}  
 
                    DateTime valDateTime;  
                    CultureInfo MyCultureInfo = new CultureInfo("en-NZ");  
                    switch (e.Item.OwnerTableView.Name)  
                    {  
                        case "School":  
                            {  
                                int? orgid = null;  
 
                                if (e.CommandName.Equals(RadGrid.UpdateCommandName))  
                                {  
                                    orgid = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["OrgID"] != null ? Int32.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["OrgID"].ToString()) : (int?)null;  
                                }  
                                orgid = db.AnybodyUpdateInsert(orgid, 2, newValues["OrgName"].ToString(), 4, """""""", (int?)null, (int?)null, (int?)null, (DateTime?)null, newValues["AddressLine1"].ToString(), newValues["AddressLine2"].ToString(), newValues["City"].ToString(), newValues["PostCode"].ToString(), "NZ", newValues["POBox"].ToString(), "", newValues["Email"].ToString(), "", newValues["PhoneWork"].ToString(), newValues["Mobile"].ToString(), newValues["Fax"].ToString(), ownerId);  
 
                                //tblSchool  
                                int? decile = newValues["Decile"] != null ? Int32.Parse(newValues["Decile"].ToString()) : (int?)null;  
                                int? enrol = newValues["Enrol"] != null ? Int32.Parse(newValues["Enrol"].ToString()) : (int?)null;  
                                string schoolType = (editedItem.FindControl("TypeRadComboBox"as RadComboBox).Text;  
 
                                switch (e.CommandName)  
                                {  
                                    case RadGrid.PerformInsertCommandName:  
                                        {  
                                            tblSchool school_i = new tblSchool();  
                                            school_i.SchoolId = orgid.Value;  
                                            school_i.Decile = decile;  
                                            school_i.Enrol = enrol;  
                                            school_i.Type = schoolType;  
                                            db.tblSchools.InsertOnSubmit(school_i);  
                                        }  
                                        break;  
                                    case RadGrid.UpdateCommandName:  
                                        {  
                                            tblSchool school_u = db.tblSchools.Single(s => s.SchoolId.Equals(orgid));  
                                            school_u.Decile = decile;  
                                            school_u.Enrol = enrol;  
                                            school_u.Type = schoolType;  
                                        }  
                                        break;  
                                }  
                            }  
                            break;  
                        case "Course":  
                            {  
                                int programId = Int32.Parse(newValues["ProgramId"].ToString());  
                                DateTime? startDate = (DateTime.TryParse(newValues["StartDate"].ToString(), MyCultureInfo, DateTimeStyles.None, out valDateTime) ? valDateTime : (DateTime?)null); // (editedItem["StartDate"].Controls[0] as RadDatePicker).SelectedDate;  
                                switch (e.CommandName)  
                                {  
                                    case RadGrid.UpdateCommandName:  
                                        {  
                                            tblCourse course = db.tblCourses.First(c => c.CourseID.Equals(Int32.Parse(newValues["CourseID"].ToString())));  
                                            course.ProgramId = programId;  
                                            course.StartDate = startDate;  
                                            course.GraduationDate = newValues["GraduationDate"] != null ? DateTime.Parse(newValues["GraduationDate"].ToString(), MyCultureInfo, DateTimeStyles.None) : (DateTime?)null;  
                                        }  
                                        break;  
                                    case RadGrid.PerformInsertCommandName:  
                                        {  
                                            tblCourse course = new tblCourse();  
                                            course.SchoolID = orgIdEdit(e);  
                                            course.ProgramId = programId;  
                                            course.StartDate = startDate;  
                                            db.tblCourses.InsertOnSubmit(course);  
                                        }  
                                        break;  
                                }  
                            }  
                            break;  
                        case "Term":  
                            {  
                                int themeid = Int32.Parse(newValues["ThemeId"].ToString());  
                                string year = newValues["Year"].ToString();  
                                CheckBoxList Check1 = editedItem.FindControl("CheckBoxList2"as CheckBoxList;  
 
                                switch (e.CommandName)  
                                {  
                                    case RadGrid.UpdateCommandName:  
                                        {  
                                            string suffix = newValues["Suffix"].ToString();  
                                            int termId = Int32.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["TermId"].ToString());  
                                            tblTerm term = db.tblTerms.First(t => t.TermId.Equals(termId) && t.OrganisationId.Equals(orgIdEdit(e)));  
                                            term.Suffix = suffix;  
                                            term.Year = year;  
                                            var ttmodules = db.tblTermThemeModules.Where(ttm => ttm.TermId.Equals(termId));  
                                            foreach (var vtt in ttmodules)  
                                            {  
                                                db.tblTermThemeModules.DeleteOnSubmit(vtt);  
                                            }  
                                            for (int i = 0; i < Check1.Items.Count; i++)  
                                            {  
 
                                                if (Check1.Items[i].Selected)  
                                                {  
                                                    tblTermThemeModule tblttModule = new tblTermThemeModule();  
                                                    tblttModule.TermId = termId;  
                                                    tblttModule.ThemeId = themeid;  
                                                    tblttModule.ModuleId = Int32.Parse(Check1.Items[i].Value);  
                                                    db.tblTermThemeModules.InsertOnSubmit(tblttModule);  
                                                }  
                                            }  
                                        }  
                                        break;  
                                    case RadGrid.PerformInsertCommandName:  
                                        {  
                                            tblTerm term = new tblTerm();  
                                            string suffix = newValues["Suffix"].ToString();  
                                            term.Suffix = suffix;  
                                            term.Year = year;  
                                            term.OrganisationId = orgIdEdit(e);  
                                            db.tblTerms.InsertOnSubmit(term);  
                                            int themeId = themeid;  
                                            if (Check1.SelectedItem != null)  
                                            {  
                                                for (int i = 0; i < Check1.Items.Count; i++)  
                                                {  
 
                                                    if (Check1.Items[i].Selected)  
                                                    {  
                                                        tblTermThemeModule ttm = new tblTermThemeModule();  
                                                        ttm.tblTerm = term;  
                                                        ttm.ThemeId = themeId;  
                                                        ttm.ModuleId = Int32.Parse(Check1.Items[i].Value);  
                                                        db.tblTermThemeModules.InsertOnSubmit(ttm);  
                                                    }  
                                                }  
                                            }  
                                            else 
                                            {  
                                                tblTermThemeModule ttm = new tblTermThemeModule();  
                                                ttm.tblTerm = term;  
                                                ttm.ThemeId = themeId;  
                                            }  
                                        }  
                                        break;  
                                }  
                            }  
                            break;  
                    }  
                    db.SubmitChanges();  
                }  
            }  
 
        }  
        if (e.CommandName == RadGrid.DeleteCommandName)  
        {  
            switch (e.Item.OwnerTableView.Name)  
            {  
                case "School":  
                    {  
                        db.sppkUID_d(Int32.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["OrgID"].ToString()));  
                        RadGrid1.MasterTableView.Caption = "<span style='color: #008000'>School has been deleted.</span>";  
                    }  
                    break;  
                case "Course":  
                    {  
                        tblCourse course = db.tblCourses.Single(c => c.CourseID.Equals(Int32.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["CourseID"].ToString())));  
                        db.tblCourses.DeleteOnSubmit(course);  
                    }  
                    break;  
                case "Term":  
                    {  
                        int termId = Int32.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["TermId"].ToString());  
                        var terms = db.tblTerms.Where(t => t.TermId.Equals(termId));  
                        foreach (var tm in terms)  
                        {  
                            db.tblTerms.DeleteOnSubmit(tm);  
                        }  
                    }  
                    break;  
            }  
            if (e.Item.OwnerTableView.Name.Contains("Survey"))  
            {  
 
                IQueryable<tblpkVoter> pkvoters = db.tblpkVoters.Where(v => v.VoterID.Equals(Int32.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["VoterID"].ToString())));  
                foreach (var voter in pkvoters)  
                {  
                    db.tblpkVoters.DeleteOnSubmit(voter);  
                }  
 
            }  
            try 
            {  
                db.SubmitChanges();  
            }  
            catch (SqlException)  
            {  
                RadGrid1.MasterTableView.Caption = "<span style='color: #FF0000'>Unable to delete. Reason: Some data is related to the this record.</span>";  
            }  
        }  
 
    }  
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)  
    {  
        if (e.Item is GridEditFormItem && e.Item.IsInEditMode)  
        {  
            if (!e.Item.DataItem.GetType().Name.Equals("GridInsertionObject"))  
            {  
                GridEditFormItem editFormItem = e.Item as GridEditFormItem;  
                switch (e.Item.OwnerTableView.Name)  
                {  
                    case "Term":  
                        int termId = Int32.Parse(editFormItem.OwnerTableView.DataKeyValues[editFormItem.ItemIndex]["TermId"].ToString());  
                        CheckBoxList _CheckBoxList2 = editFormItem.FindControl("CheckBoxList2"as CheckBoxList;  
                        var sModules = db.tblTermThemeModules.Where(m => m.TermId.Equals(termId));  
                        foreach (var v in sModules)  
                        {  
                            try 
                            {  
                                ListItem _CheckItem = _CheckBoxList2.Items.FindByValue(v.ModuleId.Value.ToString());  
                                _CheckItem.Selected = true;  
                            }  
                            catch (Exception)  
                            {  
                            }  
                        }  
                        break;  
                }  
            }  
        }  
    }
    #endregion  
 
    protected void RadComboBoxOwner_DataBound(object sender, EventArgs e)  
    {  
        if (User.IsInRole("Admin"))  
        {  
            RadComboBoxItem item = RadComboBoxOwner.Items.FindItemByValue(ownerId.ToString());  
            item.Selected = true;  
        }  
    }  
    protected void RadComboBoxOwner_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)  
    {  
        RadGrid1.Rebind();  
    }  
 
    protected void LinqOwner_Selecting(object sender, LinqDataSourceSelectEventArgs e)  
    {  
        e.Result = db.tblOwners.Select(s => new { s.OwnerID, s.tblOrganisation.OrgName }).OrderBy(s => s.OrgName).Distinct();  
    }  
    protected void LinqProgrames_Selecting(object sender, LinqDataSourceSelectEventArgs e)  
    {  
        e.Result = db.GetProgramsByOwner(ownerId);  
    }  
    protected void LinqYear_Selecting(object sender, LinqDataSourceSelectEventArgs e)  
    {  
        CurrentYears years = new CurrentYears();  
        e.Result = years.Years().OrderByDescending(y => y);  
    }  
    protected void LinqSchoolType_Selecting(object sender, LinqDataSourceSelectEventArgs e)  
    {  
        db = new FYDEvlDataContext();  
        e.Result = db.tblSchools.Where(s => s.Type.Trim().Length > 1).OrderBy(s => s.Type).Select(s => new { s.Type }).Distinct();  
    }  
}  
 
 

2 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 05 Nov 2009, 10:31 AM
Hi,

Here is a code library  on how to  Retain expanded/selected state in hierarchy on rebind

Check it out and let  me know how it goes.

Thanks,
Princy
0
Stas
Top achievements
Rank 2
answered on 05 Nov 2009, 10:39 PM

Thank you for reply.

I've seen the suggested post, but will be great to have more simple solution.
My thoughts are to use

  • RadGrid1_ItemCommand
  • RadAjaxManager1_AjaxRequest
    GridTableView
Via Refresh button it works fine, but when I try to use same technic on OnClientClose="RefreshGridInstance"  it doesn't work for some reason. Even through the debugging I can see that the particular grid is found and rebinded but for some reason the page doesn't show the change. I use RadWindow for Insert\Update .

    <telerik:RadWindowManager ID="RadWindowManager1" runat="server">  
        <Windows> 
            <telerik:RadWindow ID="RadWindow1" runat="server" Modal="true" OnClientClose="RefreshGridInstance" 
                AutoSize="True" /> 
        </Windows> 
    </telerik:RadWindowManager> 

Contentpage.aspx
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">  
 
        <script type="text/javascript">  
            function RefreshGridInstance() {  
                $find("<%= RadAjaxManager.GetCurrent(this).ClientID %>").ajaxRequest('refreshGrid');  
            }  
        </script> 
 
    </telerik:RadCodeBlock> 
Contentpage.aspx.cs
    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)  
    {  
        if (e.Argument.ToString().Equals("refreshGrid") && !String.IsNullOrEmpty(HiddenFieldGrid1.Value))  
        {  
            GridTableView tableView;  
            tableView = this.Page.FindControl(HiddenFieldGrid1.Value) as GridTableView;  
            tableView.Rebind();  
            HiddenFieldGrid1.Value = String.Empty;  
        }  
    }  
    protected void Page_Load(object sender, EventArgs e)  
    {  
        RadAjaxManager manager = RadAjaxManager.GetCurrent(Page);  
        manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(RadAjaxManager1_AjaxRequest); 
        // Your code is here
    }
    protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)  
    {  
        if (e.CommandName == RadGrid.RebindGridCommandName && e.Item.OwnerTableView.Name != "School"// MasterGrid  
        {  
            e.Canceled = true;  
            HiddenFieldGrid1.Value = e.Item.OwnerID.Replace("_""$");  
            RadAjaxManager.GetCurrent(Page).ResponseScripts.Add("RefreshGridInstance('refreshGrid');");  
        }  
        // Your code is here  
    } 

Tags
Grid
Asked by
Stas
Top achievements
Rank 2
Answers by
Princy
Top achievements
Rank 2
Stas
Top achievements
Rank 2
Share this question
or