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

Filter primary RadGrid doesn't change RadGrid inside gridTemplateColumn

1 Answer 73 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Germanno
Top achievements
Rank 1
Germanno asked on 29 Aug 2011, 06:08 AM
Hello,

I have a RadGrid with three columns: 
one gridBoundColumn with User Names;
two gridTemplateColumns with RadGrids showing things like Clients associated to that user


The problem is: When I filter the main RadGrid, the column with User Names get filtered correctly, but the gridTemplateColumns doesnt change, what means that it remains showing the same Clients of the user that was in that row before the filter be applied.


I need a way to change internal RadGrids accordingly to the user that is appearing when filtering.

Thanks in advance.


<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <telerik:RadAjaxManager ID="RadAjaxManager2" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="rgUsers">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="rgUsers" LoadingPanelID="RadAjaxLoadingPanel1" />
                </UpdatedControls>
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadWindowManager" LoadingPanelID="RadAjaxLoadingPanel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="ModalEditCreateUser">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="rgUsers" LoadingPanelID="RadAjaxLoadingPanel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="rbtnCreateUser">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadWindowManager" LoadingPanelID="RadAjaxLoadingPanel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="rtxtSearchUser">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="rgUsers" LoadingPanelID="RadAjaxLoadingPanel1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
    <div style="width: 80%; margin-left: 40px">
        <table style="width: 90%; margin-left: 20px; margin-right: 100px; float: right">
            <tr>
                <td>
                    <br />
                </td>
            </tr>
            <tr>
                <td style="float: left; width: 55%">
                    <asp:Label ID="Label1" runat="server" Text="usuários" Font-Size="Large">
                    </asp:Label>
                </td>
                <td style="width: 15%">
                    <telerik:RadComboBox ID="rcmbSortUsers" runat="server" EmptyMessage="ordenar usuários por...">
                    </telerik:RadComboBox>
                </td>
                <td style="width: 15%">
                    <telerik:RadTextBox ID="rtxtSearchUser" runat="server" EmptyMessage="procurar usuário"
                        ClientEvents-OnKeyPress="pesquisar">
                    </telerik:RadTextBox>
<%--                    <asp:Button ID="btn" runat="server" Text="Pesquisar" OnClientClick="search(this, event);">
                    </asp:Button>--%>
                </td>
                <td style="width: 15%;">
                    <telerik:RadButton ID="rbtnCreateUser" Text="criar novo usuário.." runat="server"
                        Skin="Web20" AutoPostBack="true" OnClick="rbtnCreateUser_Click">
                    </telerik:RadButton>
                </td>
            </tr>
            <tr>
                <td>
                    <br />
                </td>
            </tr>
            <tr>
                <td colspan="4">
                    <telerik:RadGrid ID="rgUsers" runat="server" AutoGenerateColumns="false" EnableEmbeddedSkins="false"
                        Skin="GridPrincipal" ItemStyle-Width="50%" AllowFilteringByColumn="true" OnItemDataBound="rgUsers_ItemDataBound"
                        OnItemCommand="rgUsers_ItemCommand" OnDeleteCommand="rgUsers_DeleteCommand">
                        <MasterTableView DataKeyNames="IdUser" HeaderStyle-Font-Size="Medium" HeaderStyle-Height="30px">
                            <Columns>
                                <telerik:GridBoundColumn UniqueName="UserName" HeaderText="usuários cadastrados"
                                    DataField="UserName" ItemStyle-Width="30%" ItemStyle-CssClass="nomeusuario">
                                </telerik:GridBoundColumn>
                                <telerik:GridTemplateColumn ItemStyle-VerticalAlign="Top" UniqueName="PerfilColumn" AllowFiltering="true"
                                    HeaderText="perfis assoc." ItemStyle-Width="32%">
                                    <ItemTemplate>
                                        <telerik:RadGrid ID="rgPerfis" runat="server" AllowFilteringByColumn="true" AutoGenerateColumns="false" Skin="GridInterna"
                                            EnableEmbeddedSkins="false" OnDeleteCommand="rgPerfis_DeleteCommand">
                                            <MasterTableView ShowHeader="false" DataKeyNames="IdPerfil" NoMasterRecordsText="Nenhum perfil associado">
                                                <Columns>
                                                    <telerik:GridButtonColumn UniqueName="btnDesassociarPerfil" ButtonType="ImageButton"
                                                        CommandName="Delete" Text="Desassociar perfil" ItemStyle-HorizontalAlign="Center"
                                                        ImageUrl="~/Images/ico-mini-fechar.png" ItemStyle-Width="5%">
                                                    </telerik:GridButtonColumn>
                                                    <telerik:GridBoundColumn UniqueName="Descricao" DataField="Descricao" ItemStyle-CssClass="perfis"
                                                        ItemStyle-Width="95%">
                                                    </telerik:GridBoundColumn>
                                                </Columns>
                                            </MasterTableView>
                                        </telerik:RadGrid>
                                        <telerik:RadButton ID="btnAssociarPerfil" runat="server" Text="associar" ButtonType="LinkButton"
                                            ToolTip="Associar usuário a um perfil" Font-Bold="true" Style="margin-left: 20px;
                                            border: none;">
                                            <Icon PrimaryIconUrl="~/Images/ico-associar.png" PrimaryIconLeft="6" PrimaryIconTop="6" />
                                        </telerik:RadButton>
                                    </ItemTemplate>
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn ItemStyle-VerticalAlign="Top" UniqueName="ClienteColumn"
                                    HeaderText="filiais e clientes assoc." ItemStyle-Width="32%" DataField="IdUser">
                                    <ItemTemplate>
                                        <telerik:RadGrid ID="rgClientes" runat="server" AutoGenerateColumns="false" Skin="GridInterna"
                                            EnableEmbeddedSkins="false" OnDeleteCommand="rgClientes_DeleteCommand">
                                            <MasterTableView ShowHeader="false" DataKeyNames="IdClienteUsuario, IdFilial, IdUser"
                                                NoMasterRecordsText="Nenhum cliente associado">
                                                <Columns>
                                                    <telerik:GridButtonColumn UniqueName="btnDesassociarCliente" ButtonType="ImageButton"
                                                        CommandName="Delete" Text="Desassociar cliente" ItemStyle-HorizontalAlign="Center"
                                                        ImageUrl="~/Images/ico-mini-fechar.png" ItemStyle-Width="5%">
                                                    </telerik:GridButtonColumn>
                                                    <telerik:GridBoundColumn UniqueName="FilialCodCliente" DataField="FilialCodCliente">
                                                    </telerik:GridBoundColumn>
                                                </Columns>
                                            </MasterTableView>
                                        </telerik:RadGrid>
                                        <telerik:RadButton ID="btnAssociarCliente" runat="server" Text="associar" ButtonType="LinkButton"
                                            ToolTip="Associar usuário a um cliente" Font-Bold="true" Style="margin-left: 20px;
                                            border: none;">
                                            <Icon PrimaryIconUrl="~/Images/ico-associar.png" PrimaryIconLeft="6" PrimaryIconTop="6" />
                                        </telerik:RadButton>
                                    </ItemTemplate>
                                </telerik:GridTemplateColumn>
                                <telerik:GridButtonColumn UniqueName="EditarColumn" HeaderText="" Text="Editar usuário"
                                    ButtonType="ImageButton" CommandName="Editar" ImageUrl="/Images/ico-editar.png"
                                    ItemStyle-Width="3%" ItemStyle-HorizontalAlign="Right">
                                </telerik:GridButtonColumn>
                                <telerik:GridButtonColumn UniqueName="ApagarColumn" HeaderText="" Text="Excluir usuário"
                                    ButtonType="ImageButton" CommandName="Delete" ImageUrl="/Images/ico-apagar.png"
                                    ItemStyle-Width="3%" ItemStyle-HorizontalAlign="Right">
                                </telerik:GridButtonColumn>
                            </Columns>
                        </MasterTableView>
                    </telerik:RadGrid>
                    <telerik:RadWindowManager ID="RadWindowManager1" runat="server">
                        <Windows>
                            <telerik:RadWindow ID="RadWindow1" Behaviors="Close" runat="server" ReloadOnShow="true"
                                VisibleStatusbar="false" VisibleTitlebar="false" Height="50px" Width="100px"
                                OnClientClose="OnClientclose" NavigateUrl="/Views/Cadastros/CadastroUsuario.aspx"
                                Modal="true" BackColor="Gray">
                            </telerik:RadWindow>
                        </Windows>
                    </telerik:RadWindowManager>
                </td>
            </tr>
        </table>
    </div>
    <telerik:RadScriptBlock ID="RadScriptBlock2" runat="server">
        <script type="text/javascript">
 
            //$find('<%=rgUsers.ClientID %>').get_masterTableView().hideFilterItem();
            function pageLoad(sender, args) {
                $find('<%=rgUsers.ClientID %>').get_masterTableView().hideFilterItem();
            }
 
            //Função responsável por abrir a Modal com os campos para criar um novo usuário
            function AbrirModal() {
                debugger;
                var oWnd = window.radopen('/Views/Cadastros/CadastroUsuario.aspx?id=-1', "ModalEditCreateUser");
            }
 
            function OnClientclose(radWindow, args) {
                debugger;
                var arg = args.get_argument();
                var ret = arg.retorno;
 
                if (ret != 0) {
                    window.location.href = "/Views/Sistema/Usuarios.aspx";
                }
            }
 
            function pesquisar(event, args) {
                debugger;
                if (args.get_keyCode() == 13) {
                    args.set_cancel(true);
                }
                setTimeout(filtrarGrid, 100);
            }
 
            function filtrarGrid() {
                var masterTableView = $find("<%=rgUsers.ClientID%>").get_masterTableView();
                var textbox = $find("<%=rtxtSearchUser.ClientID%>"); // document.getElementById("rtxtSearchUser.ClientID");
                masterTableView.filter('PerfilColumn', textbox.get_value(), Telerik.Web.UI.GridFilterFunction.Contains);
            }
        </script>
    </telerik:RadScriptBlock>
</asp:Content>

1 Answer, 1 is accepted

Sort by
0
Radoslav
Telerik team
answered on 01 Sep 2011, 08:08 AM
Hello Germanno,

Could you please elaborate a bit more on your scenario. How do you bind the nested RadGrids into the GridTemplatesColumns? Also do you use the build in filtering of the RadGrid for filtering the main RadGrid? Additionally it will be helpful if you post your code behind file. Thus we will be able to gather more details about your scenario and provide you with more to-the-point answer.
At  a meantime you could try setting manually the filter expression to the inner RadGrids. On the following link you could find information how to operating with the FilterExpression of Telerik RadGrid manually:
http://www.telerik.com/help/aspnet-ajax/grid-operate-with-filter-expression-manually.html

Looking forward for your reply.

Regards,
Radoslav
the Telerik team

Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>

Tags
Grid
Asked by
Germanno
Top achievements
Rank 1
Answers by
Radoslav
Telerik team
Share this question
or