Попытка сделать базу данных поиска по имени пользователя в текстовом поле с помощью Paramaters и Oledb - PullRequest
0 голосов
/ 03 декабря 2018

Привет, ребята, я работаю над кнопкой поиска, которая будет искать пользователей в базе данных по их имени пользователя или по их городам или по чему-либо еще.Я попытался создать параметр имени пользователя. Внутри я вставил текстовое поле, и если он что-то напишет в текстовом поле и нажмет кнопку, на нем будут показаны только те пользователи с именем пользователя, которое он написал внутри текстового поля ... Но это не работает, ребята.Пожалуйста, помогите мне узнать, как это сделать ...

Коды:

1 HTML (VeryShort):

            <asp:TextBox ID="txtUserNameFooter" runat="server" />
        <asp:Button ID = "SearchButton" Text = "חפש" runat="server" onclientclick="SearchButton_Click" onclick="SearchButton_Click"  />

2 Asp.net (C #)База данных

    protected void SearchButton_Click(object sender, EventArgs e)
{
    using (OleDbConnection sqlCon = new OleDbConnection(connectionStr))
    {
        sqlCon.Open();
        string query = "SELECT * FROM Users WHERE UserName=@UserName";
        OleDbCommand sqlCmd = new OleDbCommand(query, sqlCon);
        sqlCmd.Parameters.AddWithValue("@UserName", txtUserNameFooter.Text);
        sqlCmd.ExecuteNonQuery();
        PopulateGridView();
        sqlCon.Close();
    }
}

3 PopulateGridView Код

 void PopulateGridView()
{
    DataTable dtbl = new DataTable();
    using (OleDbConnection sqlCon = new OleDbConnection(connectionStr))
    {
        sqlCon.Open();
        OleDbDataAdapter sqlDa = new OleDbDataAdapter("SELECT * FROM Users", sqlCon);
        sqlDa.Fill(dtbl);
    }
    if (dtbl.Rows.Count > 0)
    {
        AdminBook.DataSource = dtbl;
        AdminBook.DataBind();
    }
    else
    {
        dtbl.Rows.Add(dtbl.NewRow());
        AdminBook.DataSource = dtbl;
        AdminBook.DataBind();
        AdminBook.Rows[0].Cells.Clear();
        AdminBook.Rows[0].Cells.Add(new TableCell());
        AdminBook.Rows[0].Cells[0].ColumnSpan = dtbl.Columns.Count;
        AdminBook.Rows[0].Cells[0].Text = "No Data Found";
        AdminBook.Rows[0].Cells[0].HorizontalAlign = HorizontalAlign.Center;
    }
}

Изображение сайта Нажмите здесь, чтобы найти его

Я хочу сделать это, когдаВы пишете в текстовое поле и нажимаете на кнопку, он будет искать, если его имя пользователя называется как текстовое поле, а затем, если оно есть, оно будет отображать только данные этого имени пользователя ... Пожалуйста, ребята, помогите мне, я буду очень рад получить помощь :)

1 Ответ

0 голосов
/ 03 декабря 2018

Обновите метод PopulateGridView, чтобы он принимал входной параметр следующим образом:

void PopulateGridView(string searchTerm)
{
    DataTable dtbl = new DataTable();
    using (OleDbConnection sqlCon = new OleDbConnection(connectionStr))
    {

        string query = "SELECT * FROM Users";

       OleDbCommand sqlCmd = new OleDbCommand(query, sqlCon);

       if(!String.IsNullOrWhiteSpace(searchTerm)) {
                 query+=" WHERE UserName=@UserName";
                 sqlCmd.CommandText = query;
                sqlCmd.Parameters.AddWithValue("@UserName", searchTerm);
         }

        sqlCon.Open();
        OleDbDataAdapter sqlDa = new OleDbDataAdapter(sqlCmd);

        sqlDa.Fill(dtbl);
    }

    if (dtbl.Rows.Count > 0)
    {
        AdminBook.DataSource = dtbl;
        AdminBook.DataBind();
    }
    else
    {
        dtbl.Rows.Add(dtbl.NewRow());
        AdminBook.DataSource = dtbl;
        AdminBook.DataBind();
        AdminBook.Rows[0].Cells.Clear();
        AdminBook.Rows[0].Cells.Add(new TableCell());
        AdminBook.Rows[0].Cells[0].ColumnSpan = dtbl.Columns.Count;
        AdminBook.Rows[0].Cells[0].Text = "No Data Found";
        AdminBook.Rows[0].Cells[0].HorizontalAlign = HorizontalAlign.Center;
    }
}

Обновите метод SearchButton_Click следующим образом:

protected void SearchButton_Click(object sender, EventArgs e)
{
   PopulateGridView(txtUserNameFooter.Text);        
}
...