2011-05-15 5 views
-1

콤보 상자 컨트롤과 연결된 DatagridView가 있습니다. 콤보 박스는 표의 데이터를 필터링하는 데 사용됩니다. 콤보 박스와 Datagridview의 데이터는 같은 테이블에 있습니다. 나는 오류를 찾는다. 그러나 찾을 수 없었다. 그것은 말합니다 : System.Data.DataRowViev 근처의 구문이 올바르지 않습니다.System.Data.DataRowViev 근처의 구문이 올바르지 않습니다.

그리고 ok 버튼을 클릭 한 다음 다른 오류 : 연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다.

 private void VraboteniPoOpstini_Load(object sender, EventArgs e) 
     { 

      try 
      { 
       con.Open(); 
       ad = new System.Data.SqlClient.SqlDataAdapter("Select * from tbl_PersonalniPodatoci ", con); 
       ds = new DataSet(); 


       ad.Fill(ds, "tbl_PersonalniPodatoci"); 
       dt = ds.Tables["tbl_PersonalniPodatoci"]; 
       con.Close(); 

       //fill combobox 
       cbOpstini.DataSource = dt; 
       cbOpstini.DisplayMember = "Opstina"; 
       cbOpstini.ValueMember = "Sifra"; 

      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message, "ГРЕШКА", MessageBoxButtons.OK); 
      } 

     } 


     private void cbOpstini_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string izberiOpstina = cbOpstini.SelectedValue.ToString(); 
      string sSql; 
      try 
      { 
       con.Open(); 
       //datagridview 
       sSql = "Select Sifra, Prezime, Ime, Opstina From tbl_PersonalniPodatoci Where Opstina'" + izberiOpstina + "' Order by Sifra"; 
       ad = new System.Data.SqlClient.SqlDataAdapter(sSql, con); 
       SqlCommandBuilder cb = new SqlCommandBuilder(ad); 
       DataTable dt = new DataTable(); 
       ad.Fill(dt); 

       con.Close(); 

       // fill datagridview 
       grdOpstini.DataSource= dt; 


      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message, "ГРЕШКА", MessageBoxButtons.OK); 
      } 


     } 
+2

"잘못된 구문"예, 코드는 어디에 있습니까? – BoltClock

+0

관련 코드 만 게시하십시오! –

답변

0

도와주세요 헹크는 이미 말했듯이 - 당신은 어떻게 열고, 당신의 연결을 더 돌봐을 닫아야합니다. 또한 SqlDataAdapter을 사용하는 경우 수동으로 연결을 열고 다시 닫을 필요가 없습니다. 데이터 어댑터가 자동으로이 작업을 수행합니다.

첫 번째 예에서는 데이터 테이블 하나만 있으면되지만 데이터 세트를 만든 다음 그 테이블에서 테이블을 추출하면 완전히 오버 헤드가됩니다. 이 같은

시도 뭔가 : 두 번째 쿼리 (SqlDataAdapter를 등을 사용할 때 바로 DataTable를 사용, 필요 열지하고 가까운도록 SqlConnection)

private void VraboteniPoOpstini_Load(object sender, EventArgs e) 
{ 
    try 
    { 
     // add a "using System.Data.SqlClient" to your file, to make this simpler 
     ad = new SqlDataAdapter("Select * from tbl_PersonalniPodatoci ", con); 

     DataTable dt = new DataTable(); 
     ad.Fill(dt); 

     //fill combobox 
     cbOpstini.DataSource = dt; 
     cbOpstini.DisplayMember = "Opstina"; 
     cbOpstini.ValueMember = "Sifra"; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message, "ГРЕШКА", MessageBoxButtons.OK); 
    } 
} 

당신은 유사한 접근을 할 수 있습니다.

+0

SQL 쿼리 에서처럼 오류를 찾으려고 시도합니다. 이제 오류가 없습니다. 그러나 여전히 작동하지 않습니다. 내 콤보 상자 컨트롤을 DatagridView에 연결할 수 없습니다. – user749113

관련 문제