2013-06-11 2 views
0

나는 DropDownList에서 선택한 값을 기반으로 한 연습 필터 GridView를 수행하려고합니다. 나는 dropdownlist에 이름 목록을 가지고 있는데, 이름을 클릭하면 그 사람의 정보가 datagridview에 나타나기를 바란다. 시도 임은 다음과 같이이 작업을 수행 :드롭 다운 목록에서 선택한 값을 기준으로 필터 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; 

} 

있지만 작동하지 않는, 그리고 "데이터 테이블"개체가 인식되지 않습니다 구매 C#을합니다. 누구나 내가 무엇을 잘못하고 있는지 보도록 도와 줄 수 있습니까? 감사합니다. 질문 개선 Permalink 게시 됨 7 min

+0

여기에 오류가 있습니까? –

답변

0

idTeacher의 초기화 위치가 표시되지 않습니다. 당신이 할당 한 후

그러나 DataBind ASP.NET에서 GridView에있는 DataSource :

GridView1.DataSource = table; 
GridView1.DataBind(); // <-- this is missing in your code 
당신은 그렇지 않으면 당신은 SQL 주입에 대한 가능성이 열려 있고 당신이해야, 어쨌든 SQL-매개 변수를 사용한다

모든 관리되지 않는 리소스가 (심지어 오류에) 배치되는 것을 보장하기 위해 using 문을 사용

using (var con = new OleDbConnection("ConnectionString")) 
using (var da = new OleDbDataAdapter("select * from teacher where [email protected]", 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(); 
} 
+0

감사합니다 ..i databind()를 잊었습니다. 하지만 여전히 C#으로 인식 할 수없는 데이터 테이블 개체 ... 왜 그런지 알 수 있습니까? – user2469122

+0

사용을 추가 했습니까? 'using System.Data;'또는 정규화 된 이름 사용 :'var table = new System.Data.DataTable(); ' –

+0

"using.system.data.oracleclient"를 사용하고있었습니다. 이제 나는 그것을 넣었고 인식되었습니다. 하지만 지금 연결 문자열에 오류가 있습니다 : "OLE DB 공급자가 ConnectionString에 지정되지 않았습니다. 예를 들어 'Provider = SQLOLEDB;'가됩니다." 하지만 나는 그 연결 문자열을 붙여 넣기 때문에 올바른지 생각해 봅니다 : S – user2469122

0

을 당신이 연결 문자열에 공급자 이름을 제공 할 필요가 있다고 생각합니다.

관련 문제