- PR -

納品用マシンでDataGridが上手く動かない[ASP.NET]

1
投稿者投稿内容
alf
常連さん
会議室デビュー日: 2005/11/15
投稿数: 22
お住まい・勤務地: 岐阜県・愛知県
投稿日時: 2005-12-26 13:26
alfです。
いつも参考にさせて頂いています。

現在製作中のWebアプリを納品用マシン(本来なら2003Serverだが暫定でXp)上で現状
での動きを確認するため次のような手順で手動インストールを行いました。

1.IISをインストール(フルオプション)
2. NET Framework再配布パッケージ1.0aをインストール
3.wwwrootフォルダ配下にプロジェクトフォルダごとコピー
4.管理ツールからIISを起動し、アプリケーションの配置を行う


初回起動直後にPage_Load()内から次の関数InitDataGrid()を呼んでいるのですが、
DataGridにDataTableをバインドさせるのが良くないのか、次のエラーメッセージが
出てしまいます。

 『無効なデータソースが'CaseNum_DataGrid'に対して使用されています。
  有効なデータソースはIListSourceまたはIEnumerableを実装しなければ
 なりません。』

以下にエラーが出ていると思われるソースを記します。

CaseNum_DataGrid・・・DataGridのID
         1列目:チェックボックス
         2列目:データバインド(データフィールド:ID)
実行するとWebフォーム上に(ヘッダーを除く)4×2のDataGridが生成されます

private void InitDataGrid()
{
 // 書類ケース番号選択DataGrid
 m_dtCaseNum = new DataTable();
 m_dtCaseNum.Columns.Add(new DataColumn("ID", typeof(INT)));
 for(UINT nIndex = 0;nIndex < 4;nIndex ++){ // 行数分繰り返す
  DataRow dr = m_dtCaseNum.NewRow();
  dr["ID"] = nIndex;
  m_dtCaseNum.Rows.Add(dr);
 }
 CaseNum_DataGrid.DataSource = m_dtCaseNum; ←この辺りでエラー発生
 CaseNum_DataGrid.DataBind();

 ・・・
}


当然、開発環境上では問題なく動きます。
Webアプリを非開発環境上で動かすにあたって、Windowsアプリみたいにマージモジ
ュールは必要ないと思いますが、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5037&forum=7&6
の過去記事のように、エラーメッセージから察するにDataGridの使い方が間違って
いるのでしょうか?(だとしたら何故開発環境上では問題なく動く???)

以上、よろしくお願います。【開発環境】C# + ASP.NET[.NET 2003(+SP1)]
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-12-26 14:19
> 【開発環境】C# + ASP.NET[.NET 2003(+SP1)]

VS.NET2003のこと?
そうなら、実行環境に.NET Framework1.1をインストールするべきでしょう。


alf
常連さん
会議室デビュー日: 2005/11/15
投稿数: 22
お住まい・勤務地: 岐阜県・愛知県
投稿日時: 2005-12-26 15:57
 alfです。
 todoさん、毎度迅速なレスポンス有難うございます。
 すみません、SDKのバージョンと間違えていました。
 納品用PCにインストールされている.NET Framework再配布パッケージのバージョン
 は1.1(+SP1)です。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-26 16:55
うーん、DataTable は、IListSource を実装しているハズなんですけどね...
Framework のバージョンさえ一致していれば、

引用:

『無効なデータソースが'CaseNum_DataGrid'に対して使用されています。
 有効なデータソースはIListSourceまたはIEnumerableを実装しなければなりません。』


にはならないと思うんですが... (^-^?)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2005/12/26
投稿数: 10
投稿日時: 2005-12-26 17:20
私の開発環境でもalfさんのサンプルコードで
正しく動作する事を確認しました。
が、MSDNライブラリのDataSourceプロパティの解説にある使用例では
DataTableをわざわざDataViewに置き換えてからDataSourceに設定しているようです。
ためしに、下記のように修正してみてはいかがでしょう?

DataView dv = new DataView(m_dtCaseNum);
CaseNum_DataGrid.DataSource = dv;
CaseNum_DataGrid.DataBind();
alf
常連さん
会議室デビュー日: 2005/11/15
投稿数: 22
お住まい・勤務地: 岐阜県・愛知県
投稿日時: 2005-12-27 10:38
 alfです。
 じゃんぬねっとさん、無記入さん、レスポンス有難うございます。
 プログラム的には何ら問題がないということで問題が切り分けられたので色々
 環境を見直したのですがどういうわけか、IISマッピングを修復したら今までの
 トラブルが嘘のように動きました。
 う〜ん、冒頭にも記したクリーンなOS環境に対しての初期導入手順(IIS→.NET
 Framework)は間違ってないと思うんですが...

 何はともあれ、これで客先のデモに間に合いそうです。
 色々とお騒がせしました。
1

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