2016-01-08 3 views
1

я хотел бы фильтровать DataTable столбика, который содержит данные номера, я пытаюсь следующее:фильтрация DataTable номер столбец

string selected = colSelect.GetItemText(colSelect.SelectedItem); 
if (filterText.Text.Length == 0) 
{ 
    data_table.DefaultView.RowFilter = string.Empty; 
} 
else 
{ 
    data_table.DefaultView.RowFilter = string.Format("Price Like '%{0}%'", filterText.Text); 

Я попытался заливка второго значения в строку, но не повез , я получаю сообщение об ошибке:

Cannot perform 'Like' operation on System.Decimal and System.String

данные, введенные будет любой номер или текст, но на основе данных только соответствующие числовые значения будут показывать с фильтром.

+0

Столбец «Цена» колонка строки? – sr28

ответ

2

Похоже, что Price столбик decimal, но вы указали string, который filterText.Text, чтобы отфильтровать его.

В одном решении может использоваться CONVERT, что объясняется в документации DataColumn.Expression;

data_table.DefaultView.RowFilter = "CONVERT(Price, 'System.String') like '%" + filterText.Text + "%'"; 

Я не пробовал этого один, но вы можете разобрать ваш filterText.Text в decimal (если это действительно один) и использовать его как;

data_table.DefaultView.RowFilter = "Price Like '%" + decimal.Parse(filterText.Text) + "%'"; 

Но, как я уже сказал, я не уверен, что 100% для второго.

+0

Это трюк, я просто передавал данные в datatable без какой-либо модификации типа данных и просто ожидал, что это будет строка, основанная на неправильной спецификации * sigh *, cheers :) –

Смежные вопросы