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

Selection out of range when setting value for RadComboBox in Filter-template

1 Answer 117 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Dave
Top achievements
Rank 2
Dave asked on 17 Mar 2015, 01:01 PM
Dear All,

I am going mad with what looks to me as a silly thing; I get a "Selection out of range" Parameter name: value error on a page when I try to set the filter to a value that does not exist in the dropdown combo (see printscreen attached).

I am looking for a solution to avoid/catch this error. I cannot avoid people to filter for non-existing values so I need to catch this error and handle it properly but I don't know how... Can someone help ? The code of the page is as below:

<%@ Page Title="List of WoWs" Language="VB" MasterPageFile="~/wowsearch.master" AutoEventWireup="false" CodeFile="WoWlist.aspx.vb" Inherits="WoWlist" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    <title>R&D Campus WoWs List</title>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="qckSwitch" Runat="Server">
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/WoWsearch.aspx">switch to search tool</asp:HyperLink>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="cntBody" Runat="Server">
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            //<![CDATA[
            var RadGrid1;
            var lnkShareFilter;
 
            lnkShareFilter = '';
 
            function GetGridObject(sender, eventArgs) {
                RadGrid1 = sender;
            }
 
            function ExportToExcel(fileName)
            {
                RadGrid1.get_masterTableView().exportToExcel(fileName);
            }
 
            //]]>
        </script>
    </telerik:RadCodeBlock>
    <telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="False" CellSpacing="0"
        DataSourceID="sqlWoWList" GridLines="None" PageSize="20" EnableLinqExpressions="false" Width="100%" Height="100%">
        <ClientSettings>
            <Scrolling AllowScroll="True" UseStaticHeaders="True" />
            <ClientEvents OnGridCreated="GetGridObject"></ClientEvents>
        </ClientSettings>
        <ExportSettings ExportOnlyData="true" FileName="List of WoWs" HideStructureColumns="true" IgnorePaging="true" >
            <Excel Format="ExcelML" />
        </ExportSettings>
        <MasterTableView AutoGenerateColumns="False" DataSourceID="sqlWoWList" CommandItemDisplay="Top">
 
            <NoRecordsTemplate>
                <table width="100%" border="0" cellpadding="20" cellspacing="20">
                    <tr>
                        <td align="center">
                            <h2 style="color:Red">No WoWs or SOPs found.<br />Please change or reset the filter.</h2>
                        </td>
                    </tr>
                </table>
            </NoRecordsTemplate>
 
            <CommandItemSettings ShowExportToExcelButton="true" ShowAddNewRecordButton="false" ShowRefreshButton="false" />
            <CommandItemTemplate>
                <div id="cmdContainer" style="width: 99%; padding: 10px; text-align: right;">
                    <a href="http://teamroom.nestle.com/GLOBEISIT/PTCOrbeBPMAcademy/Induction ; Training Materials/Training and Quick Reference Materials/Campus Search QRC.pdf" target="_blank" style="padding: 5px; border: 1px solid gray; margin: 0px 5px;">
                        <img src="../App_Themes/OneRDCampus/images/question-white.png" style="border: none; vertical-align: text-bottom;" /> How To
                    </a>
                    <a href="WoWlist.aspx" style="padding: 5px; border: 1px solid gray; margin: 0px 5px;">
                        <img src="../App_Themes/OneRDCampus/images/filter_(delete)_16x16.gif" style="border: none; vertical-align: text-bottom;" /> Reset filters
                    </a>
                    <a id="lnkShareFilter" onserverclick="lnkShareFilter_ServerClick" href="#" runat="server" style="padding: 5px; border: 1px solid gray; margin: 0px 5px;">
                        <img src="../App_Themes/OneRDCampus/images/bpm_email.png" style="border: none; vertical-align: text-bottom;" /> Share filter
                    </a>
                    <a href="#" runat="server" onclick="ExportToExcel('WoWlist');" style="padding: 5px; border: 1px solid gray; margin: 0px 5px;">
                        <img src="../App_Themes/OneRDCampus/images/Export2XL.gif" style="border: none; vertical-align: text-bottom;" /> Export to excel
                    </a>
                </div>
            </CommandItemTemplate>
 
            <Columns>
                <telerik:GridTemplateColumn DataField="Title" CurrentFilterFunction="NoFilter" HeaderText="Title" HeaderTooltip="Title of the WoW or document (roll-over to display the purpose)"
                    SortExpression="Title" UniqueName="Title" FilterControlAltText="Filter Title Column" FilterListOptions="AllowAllFilters" AutoPostBackOnFilter="true"
                    ShowFilterIcon="false" FilterControlWidth="100%">
                    <ItemTemplate>
                        <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%#Eval("myURL")%>' ToolTip='<%#Eval("Purpose")%>' Target='<%#Eval("URLTarget")%>'><%#Eval("Title")%></asp:HyperLink>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridBoundColumn DataField="DiagramOwner" CurrentFilterFunction="NoFilter" FilterControlAltText="Filter DiagramOwner column" HeaderText="Owner" ReadOnly="True" SortExpression="DiagramOwner" UniqueName="DiagramOwner"
                        AutoPostBackOnFilter="true" ShowFilterIcon="false" FilterControlWidth="100%" HeaderTooltip="Owner of the WoW or document">
                    <HeaderStyle Width="130px" />
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Unit" CurrentFilterFunction="NoFilter" FilterControlAltText="Filter Unit column" HeaderText="Unit"
                    SortExpression="Unit" UniqueName="Unit" HeaderTooltip="Unit that the WoW or document belongs to">
                    <HeaderStyle Width="120px" />
                    <FilterTemplate>
                        <telerik:RadComboBox ID="RadComboBoxUnit" runat="server" MaxHeight="200px" Width="110px" DropDownWidth="130px"
                            DataSourceID="sqlUnits" DataTextField="Unit" DataValueField="Unit" AppendDataBoundItems="true"
                            SelectedValue='<%# TryCast(Container, GridItem).OwnerTableView.GetColumn("Unit").CurrentFilterValue%>'
                            OnClientSelectedIndexChanged="UnitIndexChanged">
                            <Items>
                                <telerik:RadComboBoxItem Text="All" />
                            </Items>
                        </telerik:RadComboBox>
 
                        <telerik:RadScriptBlock ID="RadScriptBlock4" runat="server">
                            <script type="text/javascript">
                                function UnitIndexChanged(sender, args) {
                                    var tableView = $find("<%# TryCast(Container, GridItem).OwnerTableView.ClientID%>");
                                    tableView.filter("Unit", args.get_item().get_value(), "Contains");
                                    lnkShareFilter &= '&Unit=' & args.get_item().get_value();
                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate>
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Type" CurrentFilterFunction="NoFilter" FilterControlAltText="Filter Type column" HeaderText="Type"
                    SortExpression="Type" UniqueName="Type" FilterControlWidth="50px" HeaderTooltip="Type of WoW or document">
                    <HeaderStyle Width="90px" />
                    <FilterTemplate>
                        <telerik:RadComboBox ID="RadComboBoxType" runat="server" Width="80px" DropDownWidth="130px"
                            DataSourceID="sqlTypes" DataTextField="Type" DataValueField="Type" AppendDataBoundItems="true"
                            SelectedValue='<%# TryCast(Container, GridItem).OwnerTableView.GetColumn("Type").CurrentFilterValue%>'
                            OnClientSelectedIndexChanged="TypeIndexChanged">
                            <Items>
                                <telerik:RadComboBoxItem Text="All" />
                            </Items>
                        </telerik:RadComboBox>
 
                        <telerik:RadScriptBlock ID="RadScriptBlock3" runat="server">
                            <script type="text/javascript">
                                function TypeIndexChanged(sender, args) {
                                    var tableView = $find("<%# TryCast(Container, GridItem).OwnerTableView.ClientID%>");
                                    tableView.filter("Type", args.get_item().get_value(), "EqualTo");
                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate>
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Building" CurrentFilterFunction="NoFilter" FilterControlAltText="Filter by Group" HeaderText="Building/Group"
                    SortExpression="Building" UniqueName="Building" HeaderTooltip="Campus Building or other local grouping" >
                    <HeaderStyle Width="120px"  />
                    <FilterTemplate>
                        <telerik:RadComboBox ID="RadComboBoxBuilding" runat="server" MaxHeight="200px" Width="110px" DropDownWidth="160px"
                            DataSourceID="sqlBuildings" DataTextField="Building" DataValueField="Building" AppendDataBoundItems="true"
                            SelectedValue='<%# TryCast(Container, GridItem).OwnerTableView.GetColumn("Building").CurrentFilterValue%>'
                            OnClientSelectedIndexChanged="BuildingIndexChanged">
                            <Items>
                                <telerik:RadComboBoxItem Text="All" />
                            </Items>
                        </telerik:RadComboBox>
 
                        <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
                            <script type="text/javascript">
                                function BuildingIndexChanged(sender, args) {
                                    var tableView = $find("<%# TryCast(Container, GridItem).OwnerTableView.ClientID%>");
                                    tableView.filter("Building", args.get_item().get_value(), "EqualTo");
                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate>
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Room" CurrentFilterFunction="NoFilter" FilterControlAltText="Filter Sub-Grouping column" HeaderText="Room/Sub-Group"
                    SortExpression="Room" UniqueName="Room" HeaderTooltip="Campus Room or other local sub-grouping">
                    <HeaderStyle Width="140px" />
                    <FilterTemplate>
                        <telerik:RadComboBox ID="RadComboBoxRoom" runat="server" MaxHeight="200px" Width="130px" DropDownWidth="260px"
                            DataSourceID="sqlRooms" DataTextField="Room" DataValueField="Room" AppendDataBoundItems="true"
                            SelectedValue='<%# TryCast(Container, GridItem).OwnerTableView.GetColumn("Room").CurrentFilterValue%>'
                            OnClientSelectedIndexChanged="RoomIndexChanged">
                            <Items>
                                <telerik:RadComboBoxItem Text="All" />
                            </Items>
                        </telerik:RadComboBox>
 
                        <telerik:RadScriptBlock ID="RadScriptBlock2" runat="server">
                            <script type="text/javascript">
                                function RoomIndexChanged(sender, args) {
                                    var tableView = $find("<%# TryCast(Container, GridItem).OwnerTableView.ClientID%>");
                                    tableView.filter("Room", args.get_item().get_value(), "EqualTo");
                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate>
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="IsReleased" FilterControlAltText="Filter IsReleased column" HeaderText="Released" SortExpression="IsReleased"
                    UniqueName="IsReleased" HeaderTooltip="Is the WoW or document released and publically available?">
                    <HeaderStyle Width="55px" />
                    <FilterTemplate>
                        <telerik:RadComboBox ID="RadComboBoxIsReleased" runat="server" Width="42px" DropDownAutoWidth="Enabled"
                            SelectedValue='<%# TryCast(Container, GridItem).OwnerTableView.GetColumn("IsReleased").CurrentFilterValue%>'
                            OnClientSelectedIndexChanged="IsReleasedIndexChanged">
                            <Items>
                                <telerik:RadComboBoxItem Text="All" />
                                <telerik:RadComboBoxItem Text="Yes" Value="Yes" />
                                <telerik:RadComboBoxItem Text="No" Value="No" />
                            </Items>
                        </telerik:RadComboBox>
 
                        <telerik:RadScriptBlock ID="RadScriptBlock5" runat="server">
                            <script type="text/javascript">
                                function IsReleasedIndexChanged(sender, args) {
                                    var tableView = $find("<%# TryCast(Container, GridItem).OwnerTableView.ClientID%>");
                                    tableView.filter("IsReleased", args.get_item().get_value(), "EqualTo");
                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate>
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="NQMSRelated" CurrentFilterFunction="NoFilter" FilterControlAltText="Filter NIMS column" HeaderText="Compliance"
                    SortExpression="NQMSRelated"" UniqueName="NQMSRelated" HeaderTooltip="Is the WoW or document subject to Compliance?">
                    <HeaderStyle Width="50px" />
                    <FilterTemplate>
                        <telerik:RadComboBox ID="RadComboBoxNQMSRelated" runat="server" Width="42px" DropDownAutoWidth="Enabled"
                            SelectedValue='<%# TryCast(Container, GridItem).OwnerTableView.GetColumn("NQMSRelated").CurrentFilterValue%>'
                            OnClientSelectedIndexChanged="NQMSRelatedIndexChanged">
                            <Items>
                                <telerik:RadComboBoxItem Text="All" />
                                <telerik:RadComboBoxItem Text="Yes" Value="Yes" />
                                <telerik:RadComboBoxItem Text="No" Value="No" />
                            </Items>
                        </telerik:RadComboBox>
 
                        <telerik:RadScriptBlock ID="RadScriptBlock6" runat="server">
                            <script type="text/javascript">
                                function NQMSRelatedIndexChanged(sender, args) {
                                    var tableView = $find("<%# TryCast(Container, GridItem).OwnerTableView.ClientID%>");
                                    tableView.filter("NQMSRelated", args.get_item().get_value(), "EqualTo");
                                }
                            </script>
                        </telerik:RadScriptBlock>
                    </FilterTemplate>
                </telerik:GridBoundColumn>
            </Columns>
        </MasterTableView>
        <GroupingSettings CaseSensitive="false" />
    </telerik:RadGrid>
    <asp:SqlDataSource ID="sqlUnits" runat="server" ConnectionString="<%$ ConnectionStrings:Hydra_DevConnectionString %>"
        SelectCommand="SELECT DISTINCT [Unit] FROM [WoW_VWR_Trackers] WHERE [Unit] IS NOT NULL ORDER BY [Unit]">
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="sqlTypes" runat="server" ConnectionString="<%$ ConnectionStrings:Hydra_DevConnectionString %>"
        SelectCommand="SELECT DISTINCT [Type] FROM [WoW_VWR_Trackers] ORDER BY [Type]"></asp:SqlDataSource>
    <asp:SqlDataSource ID="sqlBuildings" runat="server" ConnectionString="<%$ ConnectionStrings:Hydra_DevConnectionString %>"
        SelectCommand="SELECT DISTINCT [Building] FROM [WoW_VWR_Trackers] WHERE [Building] IS NOT NULL ORDER BY [Building]">
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="sqlRooms" runat="server" ConnectionString="<%$ ConnectionStrings:Hydra_DevConnectionString %>"
        SelectCommand="SELECT DISTINCT [Room] FROM [WoW_VWR_Trackers] WHERE [Room] IS NOT NULL ORDER BY [Room]">
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="sqlWoWList" runat="server" ConnectionString="<%$ ConnectionStrings:Hydra_DevConnectionString %>"
        SelectCommand="SELECT DiagramURL AS myURL, * FROM [Hydra_Dev].[dbo].[WoW_VWR_Trackers]">
    </asp:SqlDataSource>
</asp:Content>

And the code-behind:
Imports Telerik.Web.UI
Imports System.Diagnostics
Imports System.Collections.Specialized.NameObjectCollectionBase
Imports System.Net
Imports System.IO
 
Imports System.Net.Mail
 
 
Partial Class WoWlist
    Inherits System.Web.UI.Page
 
    Const lvlVerboseNone As Integer = 0
    Const lvlVerboseSilent As Integer = 1
    Const lvlVerboseMail As Integer = 2
    Const lvlVerboseScreen As Integer = 4
 
    Const lvlVerbose As Integer = lvlVerboseSilent
 
    Dim ShareFilter As Object
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim IsDataSyncd As Boolean = CheckDataSync()
        If lvlVerbose = lvlVerboseMail Then
            SendChkMail()
        End If
 
        If Not IsDataSyncd Then
            'Launch DataSync
        End If
 
        If Not IsPostBack Then
            If Request.QueryString("Title") IsNot Nothing Then
                Dim myTitle As String = Server.UrlDecode(Request.QueryString("Title").ToString)
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(Title LIKE '" & myTitle & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("Title")
                radColumn.CurrentFilterValue = myTitle
                radColumn.CurrentFilterFunction = GridKnownFunction.Contains
            End If
            If Request.QueryString("Owner") IsNot Nothing Then
                Dim myOwner As String = Server.UrlDecode(Request.QueryString("Owner").ToString)
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(DiagramOwner LIKE '" & myOwner & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("DiagramOwner")
                radColumn.CurrentFilterValue = myOwner
                radColumn.CurrentFilterFunction = GridKnownFunction.Contains
            End If
            If Request.QueryString("Building") IsNot Nothing Then
                Dim myBuilding As String = Server.UrlDecode(Request.QueryString("Building").ToString)
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(Building LIKE '" & myBuilding & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("Building")
                radColumn.CurrentFilterValue = myBuilding
                radColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
            End If
            If Request.QueryString("Unit") IsNot Nothing Then
                Dim myUnit As String = Server.UrlDecode(Request.QueryString("Unit").ToString)
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(Unit LIKE '" & myUnit & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("Unit")
                radColumn.CurrentFilterValue = myUnit
                radColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
            End If
            If Request.QueryString("Room") IsNot Nothing Then
                Dim myRoom As String = Server.UrlDecode(Request.QueryString("Room").ToString)
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(Room LIKE '" & myRoom & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("Room")
                radColumn.CurrentFilterValue = myRoom
                radColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
            End If
            If Request.QueryString("Type") IsNot Nothing Then
                Dim myType As String = Server.UrlDecode(Request.QueryString("Type").ToString)
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(Type LIKE '" & myType & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("Type")
                radColumn.CurrentFilterValue = myType
                radColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
            End If
            If Request.QueryString("Owner") IsNot Nothing Then
                Dim myOwner As String = Server.UrlDecode(Request.QueryString("Owner").ToString)
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(DiagramOwner LIKE '" & myOwner & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("DiagramOwner")
                radColumn.CurrentFilterValue = myOwner
                radColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
            End If
            If Request.QueryString("IsReleased") IsNot Nothing Then
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(IsReleased LIKE '" & Request.QueryString("IsReleased").ToString & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("IsReleased")
                radColumn.CurrentFilterValue = Request.QueryString("IsReleased").ToString
                radColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
            Else
                If Request.QueryString("IsReleased") Is Nothing And Request.QueryString("Owner") Is Nothing And Request.QueryString("Type") Is Nothing And Request.QueryString("Room") Is Nothing And Request.QueryString("Unit") Is Nothing Then
                    If RadGrid1.MasterTableView.FilterExpression <> "" Then
                        RadGrid1.MasterTableView.FilterExpression &= " AND "
                    End If
                    RadGrid1.MasterTableView.FilterExpression &= "(IsReleased LIKE 'Yes')"
                    Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("IsReleased")
                    radColumn.CurrentFilterValue = "Yes"
                    radColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
                End If
            End If
            If Request.QueryString("NQMSRelated") IsNot Nothing Then
                If RadGrid1.MasterTableView.FilterExpression <> "" Then
                    RadGrid1.MasterTableView.FilterExpression &= " AND "
                End If
                RadGrid1.MasterTableView.FilterExpression &= "(NQMSRelated LIKE '" & Request.QueryString("NQMSRelated").ToString & "')"
                Dim radColumn As GridColumn = RadGrid1.MasterTableView.GetColumnSafe("NQMSRelated")
                radColumn.CurrentFilterValue = Request.QueryString("NQMSRelated").ToString
                radColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
            End If
            'RadGrid1.MasterTableView.Rebind()
        End If
        ' FilterExpression="([IsReleased] LIKE 'Yes')"
    End Sub
 
    Private Function CheckDataSync() As Boolean
        Return True
    End Function
 
    Private Function SendChkMail() As Boolean
        Return False
    End Function
 
    Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    End Sub
 
    Private Sub RadGrid1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadGrid1.Load
    End Sub
 
    Private Sub RadGrid1_PreInit(ByVal sender As Object, ByVal e As System.EventArgs)
        For Each item As GridColumn In RadGrid1.MasterTableView.Columns
            Dim FilterFunction As String = item.CurrentFilterFunction.ToString
            Dim FilterValue As String = item.CurrentFilterValue.ToString
            Dim FilterColumn As String = item.UniqueName.ToString
 
            If FilterFunction <> "NoFilter" Then
                If item.CurrentFilterValue.ToString() = "" Then
                    item.ItemStyle.BackColor = RadGrid1.AlternatingItemStyle.BackColor
                Else
                    item.ItemStyle.BackColor = Drawing.Color.LightYellow
                End If
            End If
 
        Next
    End Sub
 
    Protected Sub RadGrid1_PreRender(ByVal source As Object, ByVal e As System.EventArgs) Handles RadGrid1.PreRender
        If Not RadGrid1.MasterTableView.FilterExpression Is String.Empty Then
            RefreshCombos()
        End If
 
        For Each item As GridColumn In RadGrid1.MasterTableView.Columns
            Dim FilterFunction As String = item.CurrentFilterFunction.ToString
            Dim FilterValue As String = item.CurrentFilterValue.ToString
            Dim FilterColumn As String = item.UniqueName.ToString
 
            If FilterFunction <> "NoFilter" Then
                If item.CurrentFilterValue.ToString() = "" Then
                    item.ItemStyle.BackColor = RadGrid1.AlternatingItemStyle.BackColor
                Else
                    item.ItemStyle.BackColor = Drawing.Color.LightYellow
                End If
            End If
 
        Next
    End Sub
 
    Protected Sub RefreshCombos()
        sqlBuildings.SelectCommand = AddFilterParameters(sqlBuildings.SelectCommand, RadGrid1.MasterTableView.FilterExpression.ToString())
        sqlRooms.SelectCommand = AddFilterParameters(sqlRooms.SelectCommand, RadGrid1.MasterTableView.FilterExpression.ToString())
 
        sqlTypes.SelectCommand = AddFilterParameters(sqlTypes.SelectCommand, RadGrid1.MasterTableView.FilterExpression.ToString())
 
        sqlUnits.SelectCommand = AddFilterParameters(sqlUnits.SelectCommand, RadGrid1.MasterTableView.FilterExpression.ToString())
        RadGrid1.MasterTableView.Rebind()
    End Sub
 
    Private Function AddFilterParameters(ByVal sqlSelect As String, FilterExpression As String) As String
        Dim posORDER As Int16 = 0
        posORDER = InStr(sqlSelect, "ORDER BY", CompareMethod.Text) - 1
        Dim sqlOrder As String = Right(sqlSelect, Len(sqlSelect) - posORDER)
 
        Dim posWHERE As Int16 = 0
        posWHERE = InStr(sqlSelect, "WHERE", CompareMethod.Text) - 2
 
        Dim sqlCommand As String = ""
        If posWHERE < 0 Then
            sqlCommand = Left(sqlSelect, posORDER)
        Else
            sqlCommand = Left(sqlSelect, posWHERE)
        End If
 
        Dim sqlFilter As String = ""
        If posWHERE > 2 Then
            sqlFilter = Mid(sqlSelect, posWHERE + 8, posORDER - posWHERE - 8)
        End If
 
        If sqlFilter.Length > 0 Then
            If Left(FilterExpression, 5) <> " AND " Then
                sqlFilter &= " AND "
            End If
        End If
        sqlFilter &= FilterExpression
 
        sqlCommand &= " WHERE " & sqlFilter
 
        Return sqlCommand
    End Function
 
    Private Sub RadGrid1_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadGrid1.Init
        Dim menu As GridFilterMenu = RadGrid1.FilterMenu
        Dim i As Integer = 0
        While i < menu.Items.Count
            If menu.Items(i).Text = "NoFilter" Or _
               menu.Items(i).Text = "Contains" Or _
               menu.Items(i).Text = "EqualTo" Then
                i = i + 1
            Else
                menu.Items.RemoveAt(i)
            End If
        End While
    End Sub
 
    Private Sub RadGrid1_ItemCommand(sender As Object, e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.ItemCommand
        If e.CommandName = RadGrid.FilterCommandName Then
            Dim objFilterPair As Pair = CType(e.CommandArgument, Pair)
            Dim objCol As GridColumn = CType(e.Item.OwnerTableView.GetColumn(objFilterPair.Second.ToString()), GridColumn)
 
            Debug.Print("[" & objFilterPair.First.ToString & "]:[" & objFilterPair.Second.ToString & "] = [" & objCol.CurrentFilterValue.ToString() & "]")
 
            If objCol.CurrentFilterValue.ToString() = "" Then
                objCol.ItemStyle.BackColor = RadGrid1.AlternatingItemStyle.BackColor
            Else
                objCol.ItemStyle.BackColor = Drawing.Color.LightYellow
            End If
 
        End If
    End Sub
 
    Protected Sub lnkShareFilter_ServerClick(sender As Object, e As EventArgs)
        Dim lnkFilter As String = String.Empty
 
        For Each item As GridColumn In RadGrid1.MasterTableView.Columns
            Dim FilterFunction As String = item.CurrentFilterFunction.ToString
            Dim FilterValue As String = item.CurrentFilterValue.ToString
            Dim FilterColumn As String = item.UniqueName.ToString
 
            If FilterFunction <> "NoFilter" Then
                Debug.Print(FilterColumn & ":" & FilterFunction & "=" & FilterValue)
                lnkFilter &= "&" & FilterColumn & "=" & Server.UrlEncode(FilterValue)
            End If
 
        Next
 
        lnkFilter = "mailto:&subject=WoW List&body=" & Server.UrlEncode("http://chorra0004/hydra/bpm/WoWList.aspx?" & lnkFilter.Substring(1))
 
        Debug.Print("[" & lnkFilter & "]")
        ClientScript.RegisterStartupScript(Me.GetType(), "mailto", "<script type = 'text/javascript'>parent.location='" & lnkFilter & "'</script>")
    End Sub
 
    Protected Function ContentExists(ByVal strUrl As String) As Boolean
        Try
            Dim hwrRequest As HttpWebRequest = WebRequest.Create(strUrl)
            Dim hwrResponse As HttpWebResponse = hwrRequest.GetResponse()
            Dim stmStream As Stream = hwrResponse.GetResponseStream()
            Dim strReader As String = New StreamReader(stmStream).ReadToEnd()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
 
    Protected Function urlExists(ByVal strUrl As String) As Boolean
        Try
            Dim hwrRequest As HttpWebRequest = WebRequest.Create(strUrl)
            hwrRequest.AllowAutoRedirect = False
            Dim hwrResponse As HttpWebResponse = hwrRequest.GetResponse()
            If hwrResponse.StatusCode = HttpStatusCode.OK Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            Return False
        End Try
    End Function
End Class

Error occurs in Page_Load sub.



1 Answer, 1 is accepted

Sort by
0
Eyup
Telerik team
answered on 20 Mar 2015, 09:27 AM
Hi Dave,

Probably, you are aware of the following sample:
http://demos.telerik.com/aspnet-ajax/grid/examples/functionality/filtering/filter-templates/defaultcs.aspx

Can you please see what is the crucial difference in your case which may cause the problem?

I am also sending a modified version of this scenario using the Text property of the combo.

Regards,
Eyup
Telerik
 

Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

 
Tags
Grid
Asked by
Dave
Top achievements
Rank 2
Answers by
Eyup
Telerik team
Share this question
or