0

DropDownList で選択した値に基づいて、GridView の演習フィルターを実行しようとしています。ドロップダウンリストに名前のリストがあり、名前をクリックすると、人の情報がデータグリッドビューに表示されます。私はこれを次のようにしようとしています:

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

ただし、を割り当てた後、ASP.NET で を実行する必要がありDataBindます。GridViewDataSource

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 に答える