Недавно мне было поручено обновить приложение с .net 1.1 до 3.5, и я наткнулся на RowFilter в DataView, поведение которого отличалось между двумя версиями.
Вот мой блок кода в 1.1, который работает в 1.1, но не в 3.5. Я получаю следующую ошибку, пытаясь запустить это в 3.5: «Невозможно выполнить операцию '=' для System.String и System.Int32». И 1.1, и 3.5 попадают в одну и ту же базу данных, я просто не понимаю, как 1.1 видит строковый параметр и обрабатывает его как строку, не ставя вокруг него галочки, но в 3.5 он видит rptNum и требует, чтобы вы ставили вокруг него тики. Поле в dv представляет собой строку DataType.
private DataView BuildDataView(string rptNum) {
DataView dv = null;
if(dt != null) {
dv=new DataView(dt);
dv.RowFilter="reporting_number = " + rptNum;
}
return dv;
}
Вот мой блок кода в 3.5 изменен так, что он работает. Мне пришлось добавить галочки вокруг строкового параметра, чтобы он обрабатывал его как строку.
private DataView BuildDataView(string rptNum) {
DataView dv = null;
if(dt != null) {
dv=new DataView(dt);
dv.RowFilter="reporting_number = '" + rptNum + "'";
}
return dv;
}