2011-05-13 6 views
3

C# 및 asp.net의 gridview에 데이터베이스 데이터를 바인딩하려고합니다. 그러나 gridview.Rows에있는 데이터를 볼 수 없습니다 gridview에 추가되지만 그들은 비어 있습니다. SQLServer에서 해당 쿼리를 실행할 때 정확한 결과를 제공합니다. 추가하지 않았거나 ASP 부분에 코드를 변경하지 않았습니다. 그렇습니까? 문제가 :(도와주세요 어디 다른 이벤트에 대한ASP.Net의 GridView에 데이터베이스 데이터 바인딩

myConnection = WebConfigurationManager.ConnectionStrings["KutuphaneConnectionString"].ConnectionString; 
connect = new SqlConnection(myConnection); 
command = new SqlCommand(); 
connect.Open(); 
command.Connection = connect; 

string komut = "SELECT K.ad,K.yazar,K.baskiNo,O.sonTeslimTarihi FROM OduncIslemleri O,Kitap K WHERE O.kullaniciId=" + Session["id"] + " AND O.kitapId = K.id;"; 
     try 
     { 
      SqlCommand sqlCommand = new SqlCommand(); 

       sqlCommand = connect.CreateCommand(); 
       sqlCommand.CommandText = komut; 
       SqlDataAdapter sda = new SqlDataAdapter(sqlCommand.CommandText, connect); 
       SqlCommandBuilder scb = new SqlCommandBuilder(sda); 
       //Create a DataTable to hold the query results. 
       DataTable dTable = new DataTable(); 
       //Fill the DataTable. 
       sda.Fill(dTable); 
       GridView1.DataSource = dTable; 
       GridView1.DataBind(); 

     } 
     catch (SqlException) 
     { 
      //Console.WriteLine(e.StackTrace); 
     } 

reader.Close(); 
connect.Close(); 
+2

GridView의 aspx 부분을 제공해야합니다. [AutoGenerateColumns] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx)입니까? 게다가 포스트 백에서 Page_Load에서 GridView를 리 바인드하지 마십시오. 그리드를 DataBind하기 전에 항상! Page.IsPostback을 확인하십시오. –

+0

어떻게? 코드 샘플에서 설명 할 수 있습니까? – dnur

+0

먼저 질문에 aspx-part가 누락되었습니다. 그리고 어떤 부분을 설명하고 싶습니까? GridView- 속성 인'AutoGenerateColumns'는 자동으로 링크가 제공됩니다. [postback-check] (http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback%28VS.71%29.aspx)도 간단합니다. –

답변

0

시계가 행

을 취소 할 수있는 바인드 후 트리거 .. 찾을 수 없습니다
+0

나는 그렇게 생각하지 않는다. 나는 page_load 클래스를 썼다. 그리고 그들은 페이지가 보여지는 것보다 마지막 문장이다. – dnur

0

데이터 집합을 만드는 시도하고 대신 채워 사용하는 것을 웁니다 필자는 DataTable에서 Fill을 사용하는 것을 본 적이 없으며 MSDN에서 특정 오버로드를 찾을 수 없습니다. 그러나 이러한 과부하는 DataTable의 기존 스키마를 수정하지 않습니다. 귀하의 예제에서 사용하기 전에 만들어진, 그것은 열이 없다는 것을 의미합니다.)

+0

나는 이것을 시도했지만 같은 결과를 보냈다 : string komut = "Select K.ad, K.yazar, K.baskiNo, O.sonTeslimTarihi FROM OduncIslemleri O, Kitap K WHERE O.kullaniciId ="+ Session [ "id "] +"AND O.kitapId = K.id; "; SqlCommand cmd = 새 SqlCommand (komut, connect); SqlDataAdapter 어댑터 = 새 SqlDataAdapter (cmd); DataSet ds = new DataSet(); 어댑터. 채우기 (ds, "Kitap"); GridView1.DataSource = ds; GridView1.DataBind(); – dnur

+0

'GridView1.DataSource = ds.Tables (0);'에 대해 어떻습니까? –

+0

불행히도, 같은 .. – dnur

0

난 당신이 BindingSource 컨트롤을 사용해야한다고 생각 요 그것의 DataSource를 DataTable로 설정 한 다음 GridView의 DataSource를 BindingSource로 설정합니다. 나는 또한 GRIDVIEW에 템플릿 필드를 사용

myConnection = WebConfigurationManager.ConnectionStrings["KutuphaneConnectionString"].ConnectionString; 
connect = new SqlConnection(myConnection); 
string sorgu = "select K.ad,K.yazar,K.baskiNo,O.sonTeslimTarihi from Kitap K, OduncIslemleri O where O.kitapId = K.id and O.kullaniciId = "+ Session["id"]; 
SqlDataAdapter sadp = new SqlDataAdapter(sorgu, connect); 
DataSet ds = new DataSet(); 
sadp.Fill(ds); 
this.GridView1.DataSource = ds.Tables[0]; 
this.GridView1.DataBind(); 
connect.Close(); 

:

4

여기에 정답이다. 또한 autogeneratedFields가 true이어야합니다. 이 문제가 같은 사람들에게 도움이되기를 바랍니다.

관련 문제