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

Error Filter column of RadCombobox with special character

2 Answers 78 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Hung
Top achievements
Rank 1
Hung asked on 02 Oct 2014, 07:13 AM
Hi all,
Please help me.
When i use RadCombobox control in filter the column, I get an error:
Selection out of range
Parameter name: value
Exception Details: System.ArgumentOutOfRangeException: Selection out of range
Parameter name: value

1. .aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
            <telerik:RadGrid ID="RadGrid1" ShowGroupPanel="false" runat="server" AutoGenerateColumns="False" AllowFilteringByColumn="true" PageSize="3" EnableLinqExpressions="true">
                <ClientSettings>
                    <Resizing AllowColumnResize="true" EnableRealTimeResize="true" />
                    <Scrolling AllowScroll="true" />
                </ClientSettings>
                <MasterTableView>
                    <ColumnGroups>
                        <telerik:GridColumnGroup Name="Left" HeaderText="LEFT" HeaderStyle-HorizontalAlign="Center">
                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        </telerik:GridColumnGroup>
                        <telerik:GridColumnGroup Name="Center" HeaderText="CENTER" ParentGroupName="Left"></telerik:GridColumnGroup>
                        <telerik:GridColumnGroup Name="Right" HeaderText="RIGHT" ParentGroupName="Left"></telerik:GridColumnGroup>
                    </ColumnGroups>
                    <Columns>
                        <telerik:GridBoundColumn DataField="A" HeaderText="AAA" HeaderStyle-HorizontalAlign="Center" ColumnGroupName="Left">
                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                            <FilterTemplate>
                                <telerik:RadComboBox ID="cbFilterUserSPIMI" AppendDataBoundItems="true" runat="server"
                                    Height="150px" Width="110px" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("A").CurrentFilterValue %>'
                                    OnClientSelectedIndexChanged="IndexChangedUserSPIMI" OnInit="cbFilterUserSPIMI_Init">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="All" />
                                    </Items>
                                </telerik:RadComboBox>
                                <telerik:RadScriptBlock ID="RDFilterScriptBlockUserSPIMI" runat="server">
                                    <script type="text/javascript">
                                        function IndexChangedUserSPIMI(sender, args) {
                                            var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID%>");
                                            tableView.filter("A", args.get_item().get_value(), "EqualTo");
                                        }
                                    </script>
                                </telerik:RadScriptBlock>
                            </FilterTemplate>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="B" HeaderText="BBB" HeaderStyle-HorizontalAlign="Center" ColumnGroupName="Left">
                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                            <FilterTemplate>
                                <telerik:RadComboBox ID="cbFilterB" AppendDataBoundItems="true" runat="server" Height="150px" Width="110px"
                                    SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("B").CurrentFilterValue %>' OnClientSelectedIndexChanged="IndexChangeBBB"
                                    OnInit="cbFilterB_Init">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="All" />
                                    </Items>
                                </telerik:RadComboBox>
                                <telerik:RadScriptBlock ID="RDBlockforB" runat="server">
                                    <script type="text/javascript">
                                        function IndexChangeBBB(sender, args) {
                                            var tableView = $find("<%#((GridItem)Container).OwnerTableView.ClientID%>");
                                            tableView.filter("B", args.get_item().get_value(), "EqualTo");
                                        }
                                    </script>
                                </telerik:RadScriptBlock>
                            </FilterTemplate>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="C" HeaderText="CCC" HeaderStyle-HorizontalAlign="Center" ColumnGroupName="Center">
                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="D" HeaderText="DDD" HeaderStyle-HorizontalAlign="Center" ColumnGroupName="Right">
                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="E" HeaderText="EEE" HeaderStyle-HorizontalAlign="Center" ColumnGroupName="Right">
                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        </telerik:GridBoundColumn>
                    </Columns>
                </MasterTableView>
            </telerik:RadGrid>
        </div>
    </form>
</body>
</html>

2. codebehind

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RadGrid1.DataSource = GetDB();
            RadGrid1.DataBind();
        }

        protected DataTable GetDB()
        {
            DataTable dtb = new DataTable();

            dtb.Columns.Add("A", typeof(string));
            dtb.Columns.Add("B", typeof(string));
            dtb.Columns.Add("C", typeof(string));
            dtb.Columns.Add("D", typeof(string));
            dtb.Columns.Add("E", typeof(string));

            DataRow dr;

            for (int i = 0; i < 3; i++)
            {
                dr = dtb.NewRow();

                if (i < 1)
                {
                    dr[0] = @"Demo-A\abc";
                    dr[1] = "BBB Demo";
                    dr[2] = "Demo CCC";
                    dr[3] = "DDD Demo";
                    dr[4] = "Demo EEE";
                }
                else if (i == 1)
                {
                    dr[0] = "A/u1010";
                    dr[1] = "BBB*/u2020";
                    dr[2] = "Admid/CCC";
                    dr[3] = "DDD/&^u8080";
                    dr[4] = @"U5050\EEE";
                }
                else if (i == 2)
                {
                    dr[0] = "*&^%\u1011010";
                    dr[1] = "BBB/&^%$#@";
                    dr[2] = "$$$$$/CCC";
                    dr[3] = @"DDD\U56565656%";
                    dr[4] = "EEE/***(((";
                }

                dtb.Rows.Add(dr);
            }

                return dtb;
        }

        string temp = string.Empty;

        protected void cbFilterUserSPIMI_Init(object sender, EventArgs e)
        {

            RadComboBox combo = sender as RadComboBox;
            combo.DataSource = this.GetDB().AsEnumerable().Select(row => row.Field<string>("A")).Where(s => !string.IsNullOrEmpty(s)).Distinct().OrderBy(s => s);
        }

        protected void cbFilterB_Init(object sender, EventArgs e)
        {
            RadComboBox combo = sender as RadComboBox;
            combo.DataSource = this.GetDB().AsEnumerable().Select(row => row.Field<string>("B")).Where(s => !string.IsNullOrEmpty(s)).Distinct().OrderBy(s => s);
        }

    }
}

Thank you very much

2 Answers, 1 is accepted

Sort by
0
Konstantin Dikov
Telerik team
answered on 06 Oct 2014, 02:03 PM
Hello Hung,

Thank you for providing a sample replicating the error. 

Nevertheless, I am really glad to inform you that this bug is already fixed in our latest version 2014 Q3 Beta (version 2014.3 1002). I have tested the scenario with our latest version and I may confirm that the filtering is working correctly.

Could you please upgrade to our latest version and see if everything works correctly on your end too.


Regards,
Konstantin Dikov
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.

 
0
Hung
Top achievements
Rank 1
answered on 07 Oct 2014, 02:38 AM
Hi Konstantin Dikov,
Thanks for support. I'll try it with the lastest version.
Tags
General Discussions
Asked by
Hung
Top achievements
Rank 1
Answers by
Konstantin Dikov
Telerik team
Hung
Top achievements
Rank 1
Share this question
or