根据下拉列表选择的值过滤gridview

时间:2013-06-11 20:56:28

标签: c# asp.net sql oracle

我试图根据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分钟

2 个答案:

答案 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)

我认为您需要在连接字符串中提供提供程序名称。