0

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

4

2 回答 2

0

您没有显示初始化的位置idTeacher

但是,您必须在分配DataBindGridViewASP.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();
}
于 2013-06-11T21:04:16.423 回答
0

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

于 2013-06-11T23:05:27.947 回答