我试图根据DropDownList中的选定值进行运动过滤GridView。 我在下拉列表中有一个名单列表,当我点击名称时,我希望人员的信息出现在datagridview中。 我试着这样做:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection("Data Source=orcl;Persist Security Info=True;User ID=eq;Password=*******;Unicode=True");
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(String.Format("select * from teacher where idteacher={0} ", idteacher), con);
DataTable table = new DataTable();
dataAdapter.Fill(table);
GridView1.DataSource = table;
}
但它不起作用,并且“Datatable”对象无法识别购买c#。 任何人都可以帮我看看我做错了什么? 谢谢! 改善问题永久链接发布7分钟
答案 0 :(得分:0)
您没有显示初始化idTeacher
的位置。
但是,在分配GridView
后,您必须DataBind
ASP.NET中的DataSource
:
GridView1.DataSource = table;
GridView1.DataBind(); // <-- this is missing in your code
你应该使用sql-parameters,否则你可能会打开sql-injection,你应该使用using
语句来确保处理所有非托管资源(即使出错):
using (var con = new OleDbConnection("ConnectionString"))
using (var da = new OleDbDataAdapter("select * from teacher where idteacher=@idTeacher", con))
{
da.SelectCommand.Parameters.AddWithValue("@idteacher", idTeacher);
DataTable table = new DataTable();
da.Fill(table); // opening or closing connection not needed, done by Fill
GridView1.DataSource = table;
GridView1.DataBind();
}
答案 1 :(得分:0)
我认为您需要在连接字符串中提供提供程序名称。