#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()
. Затем вы должны отфильтровать набор данных по измененному тексту. Есть и другие способы сделать это, но я думаю, что это будет хорошим началом.