根据不工作的下拉列表从数据库中选择数据

本文关键字:数据库 选择 数据 下拉列表 工作 | 更新日期: 2023-09-27 18:05:08

我想根据下拉列表从数据库中选择值。我的数据库包含字段值的表:id(primary key),name,fullname,depat .

我的webform1.aspx页面包含一个下拉列表,GridviewSqlDatasource

这是我的Webform1.aspx.cs代码:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    string s = DropDownList1.SelectedValue.ToString();
    SqlConnection con = new SqlConnection(
        ConfigurationManager.ConnectionStrings["ztvConnectionString"].ConnectionString);
    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Table1 where name=depat", con);
    DataTable dt = new DataTable();
    da.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.DataBind();
}

从下拉列表中选择值后,没有数据显示。错误在哪里?

根据不工作的下拉列表从数据库中选择数据

阅读你的代码,你想做的是填充GridView1与数据从Table1 name=depat,这真的是你想要的吗?也许你可以更清楚地说明你想要什么。

如果您想基于所选值获得数据,那么您应该这样做:

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Table1 where name='" + s + "'", con);

但是我强烈建议你使用参数化查询,先创建一个SqlCommand

SqlCommand cmd = new SqlCommand("SELECT * FROM Table1 WHERE name = @name", conn)
cmd.Parameters.Add("@name", SqlDbType.NVarChar);
cmd.Parameter["@name"].Value = s;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
编辑:

如果您想获得特定部门的所有数据:

string s = DropDownList1.SelectedValue.ToString();
//SqlConnection...
SqlCommand cmd = new SqlCommand("SELECT * FROM Table1 WHERE depat = @depat", conn)
cmd.Parameters.Add("@depat", SqlDbType.NVarChar);
cmd.Parameter["@depat"].Value = s;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();

只是为了排除明显的,当你执行sql语句"SELECT * FROM Table1 where name=depat"在管理工作室你得到的记录返回?

我相信Ruly得到了答案=)

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string s = DropDownList1.SelectedValue.ToString();
SqlConnection con = new SqlConnection(
    ConfigurationManager.ConnectionStrings["ztvConnectionString"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Table1 where name=@name", con);
cmd.Parameters.Add("@name", s);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}