LOGO

sponsor.jpg

   ホーム      
 | 
  
   イベント      
 | 
  
   コラム      
 | 
  
   連載      
 | 
  
   フォーラム      
 | 
  
   VSUG      
 | 
  
   スタッフ日記      
 | 
  
   VSUG キャスト   
会員サービス
メンバー ログイン
新規会員登録はこちら
MENU
ホーム
イベント
VSUG アカデミー
VSUG Day
その他のイベント
コラム
連載
基本
LINQ
リッチクライアント
ASP.NET
フォーラム
初心者フォーラム
Visual Studio
.NET 開発
プラットフォーム運用
フリートーク・お知らせ
フォーラムの利用案内
VSUG
VSUGとは
フォーラムリーダー紹介
ガジェット
スタッフ日記
VSUG キャスト
第 1 回 近藤 和彦 氏
第 2 回 長沢 智治 氏
フォーラムグループ
初心者フォーラム
初心者なんでも相談室
Visual Studio
Visual Studio 2005
Visual Studio 旧環境
.NET 開発
Visual Basic
Visual C#
Visual C++/CLI その他
Web アプリケーション
リッチクライアント・UI コントロール
データベース・データアクセス
モバイル・スマートクライアント
.NET Framework
開発プロセス
マイグレーション・COM 相互運用
Office 開発・VSTO
Web ホスティングアプリケーション
ライティング・セキュアコード
プラットフォーム運用
運用管理
フリートーク・お知らせ
談話室
VSUGからのお知らせ
フォーラムの利用案内
インフォメーション
会員規約
会員登録
プライバシーポリシー
リンクポリシー
著作権について
スポンサーについて
お問い合わせ
オンライン状態
オンライン状況 オンライン状態:
未登録ユーザー 未登録ユーザー: 147
登録ユーザー 登録ユーザー: 0
計 計: 147

オンライン中のユーザー オンライン中のユーザー:

 
  VSUG フォーラム  .NET 開発  Web アプリケーション  ObjectDataSource-データ・アクセスコンポーネントの拡張について
前へ 前へ
 
次へ 次へ
新しい投稿 2009/11/14 4:48
ユーザーはオフラインです。 金魚ママ
18件の投稿
ランキングデータがありません


ObjectDataSource-データ・アクセスコンポーネントの拡張について 
言語:VB / Ver:2008 / プラットフォーム:Windows XP

お世話になります。
試行錯誤していたらこんな時間になってしまいました。しかも解決できないので、どうぞお力をお貸しください。

「新しいプロジェクト」から作成したWApp1があるとします。
その画面Xxx01.aspxでは大量のデータを表示する可能性があったため、GridViewやListViewで1ページ当たり30件でのページングとObjectDataSourceを使用したいと思っています。

私が今まで試したことは以下の通りです。

<Visual Studio User Group > 連載 > ASP.NET > データソースコントロールとの連携(その1)>
<[ASP.NET]GridViewコントロールで大量のデータをページ表示するには?[2.0、3.0、3.5、C#、VB] - @IT>

を参考にして、まずApp_Codeというフォルダを作りました。(「ASP.NETフォルダの追加」のリストにはなかったので普通に作っちゃいました。)---A

そこに、Xxx.xsdを作り、TableAdapterをドラッグしてDataTableを作りました。
この時、DB接続の文字列をWeb.configに保存するか選択する画面がありましたが、保存しませんでした。 ---B

Xxx01.aspxにGridViewを配置し、データソースの選択で「新しいデータソース」を選び、「オブジェクト」を選びました。
そして、「ビジネスオブジェクトの選択」で、Xxx.xsdを選択しようとしましたが選択肢にありませんでした。---C

Xxx01.aspxと同階層に作ってもダメで、作り直してもダメで・・・と繰り返していたのですが、何かの拍子で、同階層に作ったXxxHoge.xsdが、「ビジネスオブジェクトの選択」で選択できたのです。
そして、空のVBファイルを作って<・・・大量のデータをページ表示するには?>のサンプルコードを書き換えてみたのですが、エラーが出てビルドできません。---D

---------------------------------------------------------------------------------------------
どこを直せばいいのか、あとA~Dの疑問についても教えていただけるとありがたいです。

A:これはプロジェクトだからですか?すでにここから間違ってたりしますか?

B:保存しなかったせいでおかしくなったのかもと思ったのですが、DB接続文字列はWeb.configからappSettings="App.config"を参照して、App.config内に記述しているので、App.configの値を引っ張りたかったのですが、どうすればできますか?

C:App_CodeやBinフォルダの・・・とウィザードの説明にはあるのに、どうして選択肢に出てこなかったのでしょうか?

D:具体的に言うと、「Me.Connection」と「Me.Adapter」で波線が出ます。「XxxHoge.tableTableAdapterのメンバではありません」というエラーです。
---------------------------------------------------------------------------------------------


空のVBファイルを書き換えたソースは以下の通りです。サンプルのままの部分が多いので、書き換えなきゃいけないところ(SQLはもちろんですが)をやってないところがあるのかもしれません。
---------------------------------------------------------------------------------------------
Imports System.ComponentModel
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.VisualBasic

' 部分クラスBookTableAdapters.bookTableAdapterを定義(1)
Namespace XxxHogeTableAdapter
Partial Public Class tableTableAdapter

' ページングに対応したSELECTメソッドを定義((1))
_
Public Function GetInfosForPaging(ByVal start As Integer, ByVal max As Integer) As XxxHoge.tableDataTable
'Dim comm As SqlCommand = Me.Connection.CreateCommand()
'****↑だとエラーが出るのでいつものやり方にしてみた
Dim con As SqlConnection
con = New SqlConnection(getDBConnectionString)
Dim comm As SqlCommand = con.CreateCommand()

' 現在ページの表示に必要なデータだけを取得する
' SELECT命令を定義((2))
comm.CommandText = String.Format( _
"SELECT * FROM (SELECT isbn, title, price, publish, published, ROW_NUMBER() OVER (ORDER BY published DESC) AS rownum FROM book) AS x WHERE x.rownum BETWEEN {0} AND {1}", _
start + 1, max + start)
Me.Adapter.SelectCommand = comm '****ここもエラーになる。。。

'' 型付きデータセットを生成
Dim ds As New XxxHoge

'' 型付きデータテーブル(bookDataTable)に結果を流し込み
'Me.Adapter.Fill(ds.table)TODO
Return ds.table
End Function

End Class
End Namespace
---------------------------------------------------------------------------------------------

長文になってしまい、申し訳ありません。どうぞよろしくお願いいたします。

 
新しい投稿 2009/11/16 13:43
ユーザーはオフラインです。 小野@どっとねっとふぁん
680件の投稿
dotnetfan.org
5位




Re: ObjectDataSource-データ・アクセスコンポーネントの拡張について 

ASP.NETのプロジェクトだと、「Webアプリケーションプロジェクト」と「Webサイトプロジェクト」の2種類があります。
参考にされてるページ、というかVS2008以降のサンプルはたいてい「Webサイトプロジェクト」を使ってる場合が多いので、「新しいWebサイト」からプロジェクトを作ってためすほうがいいと思います。

ちなみに、「Webアプリケーションプロジェクト」と「Webサイトプロジェクト」の大きな違いはコンパイルが実行されるタイミングです。
Dのあたりで何かの拍子で選択できた、という話がありますが、たぶんビルドを実行したかなにかしたのでしょう。
「Webアプリケーションプロジェクト」ではたとえば新しいクラスを追加した場合、一度ビルドしないとインテリセンスに表示されない、といった形になります。

実際にどこを直せば動くか、といったあたりは確認してないので、まずなぜ動かないか、のあたりだけ。


あおい情報システム株式会社
 小野修司(どっとねっとふぁん)
Microsoft MVP for ASP/ASP.NET (April 2009 - March 2010)
 
新しい投稿 2009/11/16 15:49
ユーザーはオフラインです。 金魚ママ
18件の投稿
ランキングデータがありません


Re: ObjectDataSource-データ・アクセスコンポーネントの拡張について 

いつもお世話になっております。コメントありがとうございます。

 

ASP.NETのプロジェクトだと、「Webアプリケーションプロジェクト」と「Webサイトプロジェクト」の2種類があります。
参考にされてるページ、というかVS2008以降のサンプルはたいてい「Webサイトプロジェクト」を使ってる場合が多いので、「新しいWebサイト」からプロジェクトを作ってためすほうがいいと思います。

Webサイトで試してみました。

基本のObjectDataSourceをバインドするところまではできました。

しかし拡張したところ、GridViewがヘッダしか表示されなくなってしまいました。

拡張部分にブレークを張ってみたところ、startには0、maxには10がきちんときており、サンプルでいう「型付きデータテーブル(bookDataTable)に結果を流し込み」のあとのDataTableを見たところ10件入っているようですが。。。

なぜなんでしょうか・・・。プロパティの設定漏れでしょうか??

 

拡張したほうを表示するGridViewのプロパティは

  • AutoGenerateColumns="False"
  • PageSize="10"
  • AllowPaging="True"
  • DataSourceID="ObjectDataSource2"

また、ObjectDataSource2のプロパティは

  • DeleteMethod="Delete"
  • InsertMethod="Insert"
  • OldValuesParameterFormatString="original_{0}"
  • TypeName="XxxDataSetTableAdapters.tableTableAdapter"
  • UpdateMethod="Update
  • EnablePaging="True"
  • SelectCountMethod="ScalarQuery"
  • SelectMethod="GetInfosForPaging"
  • MaximumRowsParameterName="max"
  • StartRowIndexParameterName="start"

にしています。

 

Webプロジェクトとの比較の前にサイトでもできないのでお恥ずかしい限りですが

よろしくお願いします。

 
新しい投稿 2009/11/16 17:21
ユーザーはオフラインです。 小野@どっとねっとふぁん
680件の投稿
dotnetfan.org
5位




Re: ObjectDataSource-データ・アクセスコンポーネントの拡張について 

@ITの記事のほうを参考にしているとすると、SelectCountMethodの値が正しく修正されてないようですけど。
この記事の前回分を参考にする必要がありそうですが、そこがきちんとできてなかったりしませんか?

#いや、ちゃんと全部読んでるわけじゃないので、本当にそうかわからないけど。。。


あおい情報システム株式会社
 小野修司(どっとねっとふぁん)
Microsoft MVP for ASP/ASP.NET (April 2009 - March 2010)
 
新しい投稿 2009/11/17 10:46
ユーザーはオフラインです。 金魚ママ
18件の投稿
ランキングデータがありません


Re: ObjectDataSource-データ・アクセスコンポーネントの拡張について 

小野様、ご指摘ありがとうございます。

 

@ITのほうを参考にしていて、サンプルではSelectCountMethodのところがGetNumberOfBookだったのですが、デフォルトのScalarQueryを使用してました。

 

試しに、サンプルどおりTableAdapterもObjectDataSourceのSelectCountMethodも、"GetNumberOfBook"にしてみましたが結果は変わりませんでした。

 

本題とはちょっとそれてしまうかもしれませんが、

Integer型の変数をデバッグで見た時、&HAとかなっているのですが、今までの開発PJでは普通に10と見れていたように思います。

どこかの設定で直せるものでしょうか?

デバッグで

Public Function GetInfosForPaging(ByVal start As Integer, ByVal max As Integer) ・・・

のstartとmaxの値がそれぞれ&H0と&HAになってます。

 

 

 
 1/2ページ12次へ 
前へ 前へ
 
次へ 次へ
  VSUG フォーラム  .NET 開発  Web アプリケーション  ObjectDataSource-データ・アクセスコンポーネントの拡張について
ログイン | © 2005-2008 Visual Studio User Group. All rights reserved. 著作権について | プライバシーポリシー | リンクポリシー | お問合せ