sgtBlueBird sgtBlueBird - 1 month ago 21
C# Question

How do you filter an integer in a 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?

Answer

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.