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

[Solved] Filter menu doesn't work after postback.

2 Answers 146 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Grzesiek
Top achievements
Rank 2
Iron
Grzesiek asked on 01 Oct 2009, 12:33 PM
Hello!

I have problem with RadGrid.
The site (and codebehind) code is at the bottom.

I bind records to RadGrid - I have paging enabled. I go to the 2nd page. Then I write some string in filter textbox and choose "StartsWith".
Everything is okay - I have correct records. Now I want to change filter string, but the context menu doesn't show up.

I don't know what's going on.


Site:

<style type="text/css"
  .item, .alternatingItem 
   float: left; 
   padding: 15px; 
   margin: 15px; 
   width: 250px; 
   height: 100px; 
   border: 1px solid threedshadow; 
   line-height:20px; 
.item 
   background: whitesmoke !important; 
.alternatingItem 
   background: window !important; 
.av{float:left; margin-right:10px; margin-top:5px;} 
.rank{margin-top:5px;} 
      .loading 
        { 
            background-color: #fff; 
            height:100%; 
            width:100%; 
        } 
        .loader  
        { 
            margin:auto; 
        } 
</style> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="cph1" Runat="Server"
<h2 class="title">Nasza spoÅ‚eczność</h2> 
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"
            <AjaxSettings> 
                <telerik:AjaxSetting AjaxControlID="RG1"
                    <UpdatedControls> 
                        <telerik:AjaxUpdatedControl ControlID="RG1" LoadingPanelID="RALP1" /> 
                    </UpdatedControls> 
                </telerik:AjaxSetting> 
            </AjaxSettings> 
        </telerik:RadAjaxManager> 
 
    <asp:Panel ID="P1" runat="server"
        <telerik:RadGrid ID="RG1" DataSourceID="GetRankingUsers" AllowFilteringByColumn="true" 
           runat="server" GridLines="None" AllowPaging="true" AllowSorting="true" 
           PageSize="9" Skin="WebBlue" AutoGenerateColumns="False"
           <PagerStyle Mode="NextPrevAndNumeric" FirstPageToolTip="Pierwsza strona" HorizontalAlign="Center"  
                LastPageToolTip="Ostatnia strona" NextPagesToolTip="NastÄ™pne strony"  
                NextPageToolTip="NastÄ™pna strona" PageSizeLabelText="Wyników na stronÄ™:" 
                PrevPagesToolTip="Poprzednie strony" PrevPageToolTip="Poprzednia strona" PagerTextFormat="{4} Strona {0} z {1} ({5} rekordów)" /> 
           <MasterTableView TableLayout="Fixed"
           <Columns> 
            <telerik:GridBoundColumn DataField="user_id" HeaderText="#ID" AutoPostBackOnFilter="true" CurrentFilterFunction="EqualTo" ShowFilterIcon="false"
            </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="UserName" HeaderText="Gracz" AutoPostBackOnFilter="true"
            </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="game_id" HeaderText="#ID w grze" AutoPostBackOnFilter="true"
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="game_name" HeaderText="Nick w grze"
            </telerik:GridBoundColumn>  
            <telerik:GridDateTimeColumn FilterControlWidth="100px" DataField="forum_date_join" HeaderText="DołączyÅ‚" SortExpression="forum_date_join" 
                        UniqueName="forum_date_join" PickerType="DatePicker" DataFormatString="{0:D}" AllowFiltering="false"></telerik:GridDateTimeColumn> 
             <telerik:GridBoundColumn DataField="forum_total_points" HeaderText="Ranking" AllowFiltering="false" AllowSorting="true"
            </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="avatar" HeaderText="Użytkownik" Visible="false" AllowFiltering="false" AllowSorting="false"
            </telerik:GridBoundColumn> 
           </Columns> 
               <ItemTemplate> 
                   <%#IIf(Not CType(Container, GridItem).ItemIndex = 0, "</td></tr></table>", "")%> 
                   <asp:Panel ID="ItemContainer" CssClass='<%# IIf(CType(Container, GridItem).ItemType = GridItemType.Item, "item", "alternatingItem") %>' 
                        runat="server"
                        <img src='<%#forum_engine.AvatarUrl(Eval("avatar"))%>' class="border av" alt='<%#Eval("UserName") %>'/> 
                        <b><a href='<%# "http://www.erepublik.com.pl/profil/u-" & Eval("user_id") %>' target="_blank"><%# Eval("UserName")%></a></b> 
                        <br /> 
                        DołączyÅ‚: <%#Convert.ToDateTime(Eval("forum_date_join")).ToString("dd MMMM yyyy")%> 
                        <br /> 
                        Znany jako: <b><a href='<%# "http://www.erepublik.com/en/citizen/profile/" & Eval("game_id") %>' target="_blank"><%#Eval("game_name")%></a></b><br /> 
                        <img src='<%# ResolveUrl(forum_engine.ReturnPoints(Eval("forum_total_points"),Eval("game_id"))) %>' class="rank" title='<%#Eval("forum_total_points") & " pkt"%>' /> 
                   </asp:Panel> 
               </ItemTemplate> 
           </MasterTableView> 
            <SortingSettings SortedAscToolTip="Sortuj rosnÄ…co"  
                SortedDescToolTip="Sortuj malejÄ…co" SortToolTip="Sortuj" /> 
       </telerik:RadGrid> 
        </asp:Panel> 
               <telerik:RadAjaxLoadingPanel ID="RALP1" runat="server" EnableSkinTransparency="true" Transparency="10"
                   <div class="loading"
                    <asp:Image ID="l1" runat="server" ImageUrl="~/images/loader.gif" CssClass="loader"/> 
                   </div> 
        </telerik:RadAjaxLoadingPanel> 
<asp:SqlDataSource ID="GetRankingUsers" runat="server"  
    ConnectionString="<%$ ConnectionStrings:DbSqlConnection %>"  
    SelectCommand="erepublik_users_getranking" SelectCommandType="StoredProcedure"
</asp:SqlDataSource> 

Code behind:

 Protected Sub RG1_PreRender(ByVal sender As ObjectByVal e As System.EventArgs) Handles RG1.PreRender 
        Dim itemCount As Integer = TryCast(sender, RadGrid).MasterTableView.GetItems(GridItemType.Item).Length + TryCast(sender, RadGrid).MasterTableView.GetItems(GridItemType.AlternatingItem).Length 
        For Each item As GridItem In TryCast(sender, RadGrid).Items 
            If TypeOf item Is GridDataItem AndAlso item.ItemIndex < itemCount - 1 Then 
                TryCast(TryCast(item, GridDataItem)("user_id"), TableCell).Controls.Add(New LiteralControl("<table style='display:none;'><tr><td>")) 
            End If 
        Next 
    End Sub 
 
    Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load 
        Page.Title = System.Configuration.ConfigurationManager.AppSettings("tytul_small") & " | Nasza spoÅ‚eczność" 
 
        Dim Menu As GridFilterMenu = RG1.FilterMenu 
        Dim item As RadMenuItem 
 
        Dim i As Integer = 0 
        While i < Menu.Items.Count 
            If Menu.Items(i).Text = "NoFilter" Or _ 
               Menu.Items(i).Text = "StartsWith" Or _ 
               Menu.Items(i).Text = "EqualTo" Then 
                i = i + 1 
            Else 
                Menu.Items.RemoveAt(i) 
            End If 
        End While 
 
 
        For Each item In Menu.Items 
            'change the text for the StartsWith menu item 
            Dim it As String = String.Empty 
 
            Select Case item.Text 
                Case "StartsWith" 
                    item.Text = "Zaczyna siÄ™ od" 
                Case "NoFilter" 
                    item.Text = "Brak filtra" 
                Case "EqualTo" 
                    item.Text = "DokÅ‚adnie" 
            End Select 
        Next 
 
         
 
 
    End Sub 




2 Answers, 1 is accepted

Sort by
0
Grzesiek
Top achievements
Rank 2
Iron
answered on 01 Oct 2009, 01:32 PM
Moving code below from Page_Load to Page_Init solved the problem:

Dim Menu As GridFilterMenu = RG1.FilterMenu  
        Dim item As RadMenuItem  
  
        Dim i As Integer = 0  
        While i < Menu.Items.Count  
            If Menu.Items(i).Text = "NoFilter" Or _  
               Menu.Items(i).Text = "StartsWith" Or _  
               Menu.Items(i).Text = "EqualTo" Then  
                i = i + 1  
            Else  
                Menu.Items.RemoveAt(i)  
            End If  
        End While  
  
  
        For Each item In Menu.Items  
            'change the text for the StartsWith menu item  
            Dim it As String = String.Empty  
  
            Select Case item.Text  
                Case "StartsWith"  
                    item.Text = "Zaczyna siÄ™ od"  
                Case "NoFilter"  
                    item.Text = "Brak filtra"  
                Case "EqualTo"  
                    item.Text = "DokÅ‚adnie"  
            End Select  
        Next  

0
Grzesiek
Top achievements
Rank 2
Iron
answered on 01 Oct 2009, 01:32 PM
Moving code below from Page_Load to Page_Init solved the problem:

Dim Menu As GridFilterMenu = RG1.FilterMenu  
        Dim item As RadMenuItem  
  
        Dim i As Integer = 0  
        While i < Menu.Items.Count  
            If Menu.Items(i).Text = "NoFilter" Or _  
               Menu.Items(i).Text = "StartsWith" Or _  
               Menu.Items(i).Text = "EqualTo" Then  
                i = i + 1  
            Else  
                Menu.Items.RemoveAt(i)  
            End If  
        End While  
  
  
        For Each item In Menu.Items  
            'change the text for the StartsWith menu item  
            Dim it As String = String.Empty  
  
            Select Case item.Text  
                Case "StartsWith"  
                    item.Text = "Zaczyna siÄ™ od"  
                Case "NoFilter"  
                    item.Text = "Brak filtra"  
                Case "EqualTo"  
                    item.Text = "DokÅ‚adnie"  
            End Select  
        Next  

Tags
Grid
Asked by
Grzesiek
Top achievements
Rank 2
Iron
Answers by
Grzesiek
Top achievements
Rank 2
Iron
Share this question
or