First, don't use empty catch blocks. If you have them, use them. If there is no exception handling, why have them?
Second, here is the code for filtering.
sTable = GetQueryData(strQuery);
try
{
DataView dvddd1z = new DataView(sTable);
dvddd1z.RowFilter = string.Format("cartridgeCode LIKE '%{0}' AND projectName LIKE '%{1}'", textBox14.Text + (textBox14.Text == string.empty?String.Empty : "%", comboBox1.Text + (comboBox1.Text == string.empty)?String.Empty : "%");
dataGridView4.DataSource = dvddd1z;
}
catch { }
}
Let's say your textbox holds the value of Part1, combo holds Project1
Right now, your code is filtering for records where cartridge is like Part1Project1 (which I hope you don't have :) ) and also you're asking for the project where project name contains Part1Project1 which also isn't right.
With the code above, you'll search for the cartrige which contains name part1 and the project that contains Project1
Instead of using if () else to add filters which would require additional ifs wherever you have new condition, use ternary operator (expression ? true value : false value)
Also, google a bit about SQL injection...consider what would happen if one of your users put "'; GO; DROP TABLE PROJECTS; '--"
into your textbox :)