- - PR -
DataGridのページングについて教えて下さい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-03-11 14:51
ASP.NET(C#)で、ページングしたいのですが、
最初のページは、問題なく表示されるのですが、2ページ目で 『オブジェクト参照がオブジェクト インスタンスに設定されていません。 』 と表示されてしまいます。 原因は何でしょうか? DBは、Access2000を使用しています。 ソースは以下のとおりです。 protected OleDbConnection cn; protected OleDbDataAdapter da; protected OleDbCommand cmd; protected OleDbParameter Skey; protected DataSet ds; private void BTN_KENSAKU_Click(object sender, System.EventArgs e) { string S_Key; if(textbox.Text=="" || textbox.Text==" ") { S_Key="%"; } else if(textbox.Text.Length < 5) { S_Key=textbox.Text.Replace("*","%")+"%"; } else { S_Key=textbox.Text; } cn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=(DBファイル名);"); da=new OleDbDataAdapter(); cmd = new OleDbCommand("SELECT * FROM DB WHERE CD LIKE @Skey",cn); Skey=cmd.Parameters.Add("@Skey",SqlDbType.NText); Skey.Value=S_Key; da.SelectCommand =cmd; ds=new DataSet(); da.Fill(ds,"Prd"); DataGrid1.DataSource=ds.Tables["Prd"]; DataGrid1.DataBind(); } private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { DataGrid1.CurrentPageIndex=e.NewPageIndex; da.Fill(ds,"Prd"); DataGrid1.DataSource=ds.Tables["Prd"]; DataGrid1.DataBind(); } 以上、ご教授宜しくお願い致します。 | ||||
|
投稿日時: 2006-03-11 18:56
こんにちは。
da 等のデータの表示に必要なオブジェクトが DataGrid1_PageIndexChanged イベントハンドラ内でインスタンスとして生成されていないのが原因です。 [ メッセージ編集済み 編集者: ue 編集日時 2006-03-11 19:02 ] | ||||
|
投稿日時: 2006-03-11 19:11
これらのスコープはこんなに広い必要がないと思うので、もう少し狭くしてみてはどうでしょうか。そうしたらあまり悩まなくて済むと思います。 #ds は場合によっては広くてもいいかも _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-03-12 05:34
Data_PageIndexChangedイベントハンドラ内で、da等を生成してみたのですが、 変わらなかったです。 ASP.NETの勉強を始めて数ヶ月したたっていないので、詳しい事があまりわかって いませんので、申し訳有りませんが、もうちょっと舞台的に教えて頂けると幸いです。 お手数お掛けしますが、宜しくお願い申し上げます。 | ||||
|
投稿日時: 2006-03-12 07:02
[検索]ボタンをクリックしたときの動作とDataGridのページングの動作
を見直してみてください。以下のように書き換えると動作するかと。
_________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2006-03-12 09:02
ACCESSさん、ありがとう御座いました。
ACCESSさんの修正して頂いた通りに直したら、 無事にページングが機能するようになりました。 だけど・・・ DataGrid1_PageIndexChangedイベント内でも 再度、da等を生成しないとダメなのは、なぜでしょうか。 理由がイマイチわかりません。 引き続きご教授お願い申し上げます。 | ||||
|
投稿日時: 2006-03-12 12:42
http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp05/entwebapp05_01.html
ここらへん参考になると思います。 |
1