Вы должны сделать этот запрос инъекционным доказательством! Не объединяйте введенные пользователем значения, а используйте параметры, например:
SqlCommand cmd = new SqlCommand(@"
SELECT * from Project
WHERE
( Number = @Number OR @Number IS NULL ) AND
( Category LIKE @Category OR @Category IS NULL ) AND
( ProductDescription LIKE @ProductDescription OR @ProductDescription IS NULL )", conn);
if(!String.IsNullOrEmpty(this.Textbox_ProjectNr.Text.Trim()))
cmd.Parameters.AddWithValue("@Number", this.Textbox_ProjectNr.Text.Trim());
if(!String.IsNullOrEmpty(this.Textbox_Category.Text.Trim()))
cmd.Parameters.AddWithValue("@Category", this.Textbox_Category.Text.Trim());
if(!String.IsNullOrEmpty(this.Textbox_pDescription.Text.Trim()))
cmd.Parameters.AddWithValue("@ProductDescription", this.Textbox_pDescription.Text.Trim());
Кроме того, вы можете добавить некоторую проверку клиента для введенных пользователем значений. Например, запросите более трех (?) Символов перед выполнением этого запроса.
<asp:TextBox ID="Textbox_ProjectNr" runat="server" />
<asp:RegularExpressionValidator ID="Textbox_ProjectNr_Validator" runat="server"
ControlToValidate="Textbox_ProjectNr"
ErrorMessage="Minimum length is 3"
ValidationExpression=".{3,}" />