根据下拉列表选择数据库中的数据不起作用

时间:2013-03-22 01:00:39

标签: c# .net database

我想根据下拉列表从数据库中选择值。我的数据库包含具有字段值的表: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();
}

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

3 个答案:

答案 0 :(得分:1)

从您的代码中读取,您要做的是使用Table1中的数据填充 GridView1 ,其中 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();

答案 1 :(得分:0)

只是为了排除显而易见的,当你在Management Studio中执行sql语句“SELECT * FROM Table1 where name = depat”时,你会得到记录吗?

答案 2 :(得分:0)

我相信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();
}