фильтр в gridview на c#

#c# #asp.net

#c# #asp.net

Вопрос:

У меня есть gridview с именами столбцов (имя_пакета, имя_первого_папки, расписание, дата начала, дата окончания, labname)

Я хочу добавить фильтр в gridview. Могу ли я добавить фильтр ниже каждого столбца заголовка gridview.Или я должен использовать его вне gridview? Здесь я использую его вне gridview.И запускает событие TextChanged.Я выполнил следующий код, но он больше не работает.Пожалуйста, предложите решение.

Мне нужно получить доступ к данным из трех таблиц для отображения в gridview.Три формата таблиц приведены ниже,

 BatchMaster(batchmasterid,usermasterid,labmasterid,batchname,batchcode,batchdays,startdate,enddate)

UserMaster(usermasterid,title,firstname,middlename,lastname,phoneno);

LabMaster(labmasterid,labname);
  

Я пишу код для события изменения текстового поля, которое выводится за пределы gridview.

 protected void txtSearch_TextChanged(object sender, EventArgs e)
       {
           SqlConnection con = new SqlConnection("Data
Source=.\SQLEXPRESS;Initial Catalog=EMS;User ID=sa;Password=sa123");
           string query = "SELECT
batchmasterid,usermasterid,labmasterid,batchname,faculty,batchdays,startdate,enddate,LabMaster.labname
FROM BatchMaster,UserMaster Where batchname LIKE '%"   txtSearch.Text
  "%'";
           SqlCommand cmd = new SqlCommand(query, con);
           SqlDataAdapter da = new SqlDataAdapter(cmd);
           DataSet ds = new DataSet();
           da.Fill(ds);
           gvHeadload.DataSource = ds;
           gvHeadload.DataBind();

      }
  

также я попробовал запрос объединения. Но это больше не работает.
Пожалуйста, предложите решение как можно раньше.
дополнительно благодарю вас за ваше предложение..

Комментарии:

1. почему я чувствую, что SQL-инъекция ожидает своего появления?

Ответ №1:

Во-первых, вы не должны создавать sql-соединение каждый раз, когда пользователь что-то вводит. Вы должны сделать это, например, после OnInitialize(). Во-вторых, вы должны открыть connection: con.Open() , получить данные, сохранить их в наборе данных и закрыть con.Close() . Затем вы должны отфильтровать набор данных по измененному тексту. Есть и другие способы сделать это, но я думаю, что это будет хорошим началом.