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

custom filter not working

1 Answer 141 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Aaron
Top achievements
Rank 1
Aaron asked on 16 Jan 2009, 08:35 PM
I'm getting this error "No property or field 'PhoneNumber' exists in type 'DataRowView'" when I try to rebind my grid after changing the filterexpression.
I hope someone can explain why.
My c# code is:
protected void btnFilter_Click(object sender, EventArgs e) 
        { 
            string filter = ""
 
            switch (cboFilter.SelectedValue) 
            { 
                case "AccountNumber"
                    { 
                        filter = String.Format("(AccountNumber LIKE '%{0}%')", txtFilter.Text.Trim()); 
                        break
                    } 
                case "DateRange"
                    { 
                        if ((rdpDateFrom.SelectedDate != null) && (rdpDateTo.SelectedDate != null)) 
                        { 
                            filter = String.Format("(DateFrom >= {0}) AND (DateTo <= {1})", rdpDateFrom.SelectedDate, rdpDateTo.SelectedDate); 
                        } 
                        else if ((rdpDateFrom.SelectedDate != null) && (rdpDateTo.SelectedDate == null)) 
                        { 
                            filter = String.Format("(DateFrom >= {0})", rdpDateFrom.SelectedDate); 
                        } 
                        else if ((rdpDateFrom.SelectedDate == null) && (rdpDateTo.SelectedDate != null)) 
                        { 
                            filter = String.Format("(DateTo <= {0})", rdpDateTo.SelectedDate); 
                        } 
                        break
                    } 
                case "FullName"
                    { 
                        filter = String.Format("(FullName LIKE '%{0}%')", txtFilter.Text.Trim()); 
                        break
                    } 
                case "PhoneNumber"
                    { 
                        filter = String.Format("(PhoneNumber LIKE '%{0}%')", txtFilter.Text.Trim()); 
                        break
                    } 
            } 
            rgBills.MasterTableView.FilterExpression = filter; 
            rgBills.MasterTableView.DataBind(); 
        } 

The markup for the grid is:
<telerik:RadGrid ID="rgBills" runat="server" Skin="Web20" 
            AllowPaging="True" AllowSorting="True" GridLines="None" DataSourceID="dsBills" 
            OnItemDataBound="rgBills_ItemDataBound" OnItemCommand="rgBills_ItemCommand" 
            ShowFooter="True" OnSelectedIndexChanged="rgBills_SelectedIndexChanged" > 
            <HeaderContextMenu EnableTheming="True"
                <CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation> 
            </HeaderContextMenu> 
            <ClientSettings> 
                <Selecting AllowRowSelect="true" /> 
            </ClientSettings> 
            <FilterItemStyle Width="90%" /> 
            <MasterTableView AutoGenerateColumns="False" DataSourceID="dsBills" DataKeyNames="AutoNumber"
                <RowIndicatorColumn> 
                    <HeaderStyle Width="20px"></HeaderStyle> 
                </RowIndicatorColumn> 
                <ExpandCollapseColumn> 
                    <HeaderStyle Width="20px"></HeaderStyle> 
                </ExpandCollapseColumn> 
                <Columns> 
                    <telerik:GridTemplateColumn AllowFiltering="false"
                        <HeaderTemplate> 
                            <asp:CheckBox runat="server" ID="CheckBoxHeader" OnCheckedChanged="ToggleSelectedState" 
                                AutoPostBack="true" /> 
                        </HeaderTemplate> 
                        <ItemTemplate> 
                            <asp:CheckBox runat="server" ID="CheckBox1" OnCheckedChanged="ToggleRowSelection" 
                                AutoPostBack="true" /> 
                        </ItemTemplate> 
                    </telerik:GridTemplateColumn> 
                    <telerik:GridBoundColumn DataField="PhoneNumber" HeaderText="Phone Number" ReadOnly="True" 
                        SortExpression="PhoneNumber" UniqueName="PhoneNumber"
                    </telerik:GridBoundColumn> 
                    <telerik:GridTemplateColumn DataField="FullName" HeaderText="Full Name" SortExpression="FullName" 
                        UniqueName="FullName"
                        <ItemTemplate> 
                            <asp:LinkButton ID="lnkUserAccount" runat="server" Text='<%# Bind("FullName") %>' 
                                OnClick="lnkUserAccount_Click" /></ItemTemplate
                    </telerik:GridTemplateColumn> 
                    <telerik:GridBoundColumn DataField="AccountNumber" HeaderText="Account Number" SortExpression="AccountNumber" 
                        UniqueName="AccountNumber" DataType="System.String"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn DataField="Email" HeaderText="Email" SortExpression="Email" 
                        UniqueName="Email" Display="false"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn DataField="AutoNumber" DataType="System.Int64" HeaderText="AutoNumber" 
                        ReadOnly="True" SortExpression="AutoNumber" UniqueName="AutoNumber" Display="false"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn DataField="UserName" HeaderText="UserName" SortExpression="UserName" 
                        UniqueName="UserName" Display="false"
                    </telerik:GridBoundColumn> 
                    <telerik:GridDateTimeColumn DataField="DateFrom" DataType="System.DateTime" HeaderText="Date From" 
                        SortExpression="DateFrom" UniqueName="DateFrom" DataFormatString="{0:dd/MM/yyyy}" 
                        FilterControlWidth="100px"
                        <ItemStyle HorizontalAlign="Center" /> 
                        <HeaderStyle HorizontalAlign="Center" /> 
                    </telerik:GridDateTimeColumn> 
                    <telerik:GridDateTimeColumn DataField="DateTo" DataType="System.DateTime" HeaderText="Date To" 
                        SortExpression="DateTo" UniqueName="DateTo" DataFormatString="{0:dd/MM/yyyy}" 
                        FilterControlWidth="100px"
                        <ItemStyle HorizontalAlign="Center" /> 
                        <HeaderStyle HorizontalAlign="Center" /> 
                    </telerik:GridDateTimeColumn> 
                    <telerik:GridTemplateColumn AllowFiltering="false"
                        <ItemTemplate> 
                            <asp:LinkButton ID="cmdShowDetails" runat="server" CommandName="ShowDetails" Text="Show Details" /></ItemTemplate
                    </telerik:GridTemplateColumn> 
                </Columns> 
                <PagerStyle Mode="NextPrevNumericAndAdvanced" /> 
            </MasterTableView> 
            <ClientSettings> 
                <Selecting AllowRowSelect="True" /> 
            </ClientSettings> 
            <FilterMenu EnableTheming="True"
                <CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation> 
            </FilterMenu> 
            <EditItemStyle BackColor="#5174AA" /> 
        </telerik:RadGrid> 


1 Answer, 1 is accepted

Sort by
0
Nikolay Rusev
Telerik team
answered on 19 Jan 2009, 04:33 PM
Hello Aaron,

Can you tell us what DataSourceControl you are using to populate RadGrid?
You can try calling rgBills.Rebind() instead of calling DataBind method on Button.Click. Please give this suggestion a try.

Regards,
Nikolay
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Tags
Grid
Asked by
Aaron
Top achievements
Rank 1
Answers by
Nikolay Rusev
Telerik team
Share this question
or