sgtBlueBird
sgtBlueBird

Reputation: 157

Filter an integer using Like in BindingSoure.Filter or DataView.RowFilter

I've Trying to filter a DataView which have multiple columns where some is numerical values. Everything works perfectly when typing in a string but once a numerical value gets entered (like checking for courier #) it filters to nothing.

How My Data Displays before filter: enter image description here

How My Data Displays after filter: enter image description here

My Code is as followed:

private void tbxSearchCourier_KeyUp(object sender, KeyEventArgs e)
    {
        string outputInfo = "";
        string[] keyWords = tbxSearchCourier.Text.Split(' ');

        foreach (string word in keyWords)
        {
            if (outputInfo.Length == 0)
            {
                outputInfo = "('Courier #' LIKE '%" + word + "%' OR Name LIKE '%" + word + "%' OR Branch LIKE '%" + word + "%' OR 'Contact Number' LIKE '%" + word
                    + "%' OR 'Email Address' LIKE '%" + word + "%')";
            }
            else
            {
                outputInfo += " AND ('Courier #' LIKE '%" + word + "%' OR Name LIKE '%" + word + "%' OR Branch LIKE '%" + word + "%' OR 'Contact Number' LIKE '%" + word
                    + "%' OR 'Email Address' LIKE '%" + word + "%')";
            }
        }
        CourierDV.RowFilter = outputInfo;
    }

I've search for a solution on the web but can't find anything that works. Why is this happening and how can I fix it?

Upvotes: 4

Views: 10663

Answers (1)

Reza Aghaei
Reza Aghaei

Reputation: 125197

Consider these notes:

  • You've put the column name between '' which makes it as a string literal.

  • Use [] around column name if it's a complex name.

  • To compare an integer column with LIKE operator, you should first convert it to string because LIKE is an string operator.

  • Also make sure your column name is Courier # and it's not the caption/header text.

Example

dataView.RowFilter = "Convert([Some Column], System.String) LIKE '12%'";

More Information

To learn more about supported syntax for filter, take a look at DataColumn.Expression.

Upvotes: 10

Related Questions