- PR -

DataGridでの編集について

1
投稿者投稿内容
kage
会議室デビュー日: 2005/07/28
投稿数: 5
投稿日時: 2005-07-28 18:01
最近、.NETで開発を始めたkageと申します。
悩んだときにはしばしばお世話になってます。

が、今回はどうしても解決することができないので、皆さんのアドバイスを頂けたらと思い、投稿させていただきました。

DataGridを用いて、データベースの内容を表示させようとしているんですが、「編集」をプッシュしたり、違うページに移動したりする時に、
 Fill: SelectCommand.Connection プロパティが初期化されていません。
というエラーが生じます。
(初回のデータ表示はできます)


ソースは、編集を押すとその行を編集できることを意図したものとしています。


コード:
public class test03 : System.Web.UI.Page
{
	protected System.Web.UI.WebControls.DataGrid DataGrid3;
	SqlConnection sqlConnect;

	//データテーブルの作成
	DataTable MakeDataTable()
	{
		string sql = "select * from WL";
		DataTable dt = new DataTable();    

		SqlDataAdapter sqlAdapter = new SqlDataAdapter(sql, sqlConnect);
		<b>sqlAdapter.Fill(dt);ここでエラーが生じます</b>

		return dt;		
	}

	public void DataGrid3_Edit(object sender, DataGridCommandEventArgs e)
	{
		DataGrid3.EditItemIndex = e.Item.ItemIndex;
		DataGrid3.DataSource=MakeDataTable();
		DataGrid3.DataBind();		
	}
	
	private void Page_Load(object sender, System.EventArgs e)
	{
		// ページを初期化するユーザー コードをここに挿入します。
		if(!IsPostBack)
		{
			Database.SetDatabase("LOACH");//接続DBの選択
			sqlConnect = Database.Connect();//DBへの接続

			DataGrid3.DataSource=MakeDataTable();
			DataGrid3.DataBind();
		}
	}
}



よろしくお願いします。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-07-28 18:11
NAL-6295です。

sqlConnectが参照するインスタンスはいつ生成されるでしょう。

それが答えです。


_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-07-28 18:17
実行時エラーの直接の原因についての回答です。
↓が、ポストバック時にはnullになってるのでは?
SqlConnection sqlConnect;

WebPageのインスタンスは、
クライアントからリクエストが来るたびに
新規に作成されるのはご存知でしょうか?
kage
会議室デビュー日: 2005/07/28
投稿数: 5
投稿日時: 2005-07-28 19:25
NAL-6295さん、葉瀬崎さん、早速の回答、ありがとうございます。

お二人が仰る通り、sqlConnectがポストバック時にはnullになっていました…。
MakeDataTabel()
の中にsqlConnectを入れて定義するとうまくいきました。

本当にありがとうございましたm(_ _)m
1

スキルアップ/キャリアアップ(JOB@IT)