2011-05-13 10 views
3

データベースデータをc#とasp.netのgridviewにバインドしようとしています。しかし、私はgridview.Rowのデータを見ることができませんでした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)ですか?また、PostbacksのPage_LoadからGridViewを再バインドしないように注意してください。したがって、DataBind the Gridの前に必ず '!Page.IsPostback'をチェックしてください。 –

+0

どうですか?コードサンプルで説明できますか? – dnur

+0

あなたの質問に欠けているaspxの部分を最初に完了します。そして、あなたはどんな部分を説明したいですか? 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

DataSetを作成してみてください、代わりに記入し使用していることを移入私は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(); adapter.Fill(ds、 "Kitap"); GridView1.DataSource = ds; GridView1.DataBind(); – dnur

+0

'GridView1.DataSource = ds.Tables(0);'ではどうですか? –

+0

残念ながら、同じ.. – dnur

0

私はBindingSource Controlを使用する必要があると思いますそれの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にする必要があります。私はこれが同じ問題を抱えている人々に役立つことを願っています。

関連する問題