【问题标题】:Trying To Make Search Database by UserName in textbox by Paramaters and Oledb尝试通过参数和 Oledb 在文本框中按用户名创建搜索数据库
【发布时间】:2019-05-05 01:29:01
【问题描述】:

大家好,我正在开发一个搜索按钮,该按钮将通过用户名或城市或其他任何内容在数据库中搜索用户。 我试图制作用户名的参数,我在里面放了一个文本框,如果他在文本框中写了一些东西并单击按钮,它将只显示他在文本框中写的用户名的用户...... 但是它不起作用,请帮我找出如何制作它...

代码:

1 HTML(非常短):

            <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;
    }
}

网站图片 Click Here to Look for it

我希望它在您在文本框中写入并按下按钮时进行搜索,如果他们的用户名与文本框类似,然后如果有,它将仅显示该用户名的数据... 请大家帮帮我,我会很高兴得到帮助:)

【问题讨论】:

  • “不工作”是什么意思?你得到所有用户,什么都没有,错误的?您是否也确认了 PostBack 上 txtUserNameFooter.Text 的值?
  • 我想得到我在文本框中写的用户,我的意思是如果我写 david123 它只会显示来自这个用户名数据的数据
  • 我添加了 PopulateGridView 代码

标签: c# asp.net database search oledb


【解决方案1】:

更新 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);        
}

【讨论】:

  • 非常感谢您,您的回答令人惊叹和完美,现在我知道如何制作这样的东西
猜你喜欢
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
相关资源
最近更新 更多