我想根据下拉列表从数据库中选择值。我的数据库包含具有字段值的表:id(primary key),name,fullname,depat
。
我的webform1.aspx
页面包含一个下拉列表,Gridview
和SqlDatasource
。
这是我的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();
}
从下拉列表中选择值后,不显示任何数据。错误在哪里?
答案 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();
}