- ベストアンサー
ASP.Net初心者の難解な壁に当たっております
- ASP.Net初心者がグリッドビューの内容を変更する方法がわからない
- TableAdapterやDataTable、Classを記述してもIntelliSenseに関数名が表示されず呼び出せない
- GetMstTokDataSet2メソッドが宣言されておらず呼び出せない
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あのねえ。 貴方、クルマの運転するのに、「キーを回したのに動きません。何で」と言ってるのと同じだよ。 クルマなら順番にガソリンの入れ方、ドアの開け方、ギアの入れ方っちゅうもんがあるんでないの? カスタマイズしたWhere文を動的にセットするために、GridViewにSQLDataSource繋いで、TableAdapterも理解しないところから始まってるのに、その過程で「自分の質問の意図と違う」とは何ぞ。 ObjctDataSourceってカスタマイズしたSQLの処理に限らず、ページング表示とか、更新・削除・挿入などの双方向処理などを行うための奥深い、複雑なものなんだ。 先に接続先であるDAOのことを完全に理解しないと手が出ないと思ってそういう説明をしてる。 「初心者や」ていうんなら、「ここまではわかった」という過程を明確にして進まんといかんよ。 まあ、色々やってみることやね。 オイラの言ってることは赤間本にも、ネットにも山のように書いてあるし。
その他の回答 (1)
- shockatz
- ベストアンサー率80% (153/191)
何か変だなあ。。 Protected Sub Button1_Click というボタンが何をするものかよくわからないのですが、単にGridViewとObjectDataSourceを連結するだけなら、 me.theGridViewXXXXControl.DataBind() だけですよ? で、以降はGridViewのPagingコントローラが、勝手にObjectDataSourceを呼び出して、自らの表示を行い、クリックされればObjectDataSourceを呼び出してページング表示を行います。 何度も繰り返しますが、ObjectDataSourceって、データソース(この場合はTableAdapter)と、コントロール(GridView)を媒介するだけです。 早い話、プロパティ設定パネルでSELECT/DELETE/UPDATE/StartIndexなどの属性に対応するTableAdapterのメソッドやプロパティを設定してするだけです。 GridViewのDataSource(DataSourceIDではなく)に、TableAdapterの戻り値を突っ込み、DataBind()してもデータは表示されます。 それなら何でこんなもんを使うかというと、ページング表示やデータ更新。削除において、表示コントロールとデータアクセス側(TableAdapterやDataAdapter)を仮想化して繋ぎたいからなのです。 DAO(データアクセスオブジェクト)は、DB以外にも各種のストリーム、XML、RSSなど色々あるので、こいつ(ObjectDataSource)がはまっていると、泥臭い物理取得を切り離せるので、都合がいいのです。 //== とにかく、TableAdapterとObjectDataSourceと、GridViewの話がごっちゃになっています。 この3つを分けて順にマスターしていきましょう。 //== DataSet1というデータセットを作成し、中にAccessesというデータテーブルと、AccessesTaというテーブルアダプタを作ったときの例文。C#ですいません。適宜VBに読み替えてください。 namespace TableAdapterSample.DataSet1TableAdapters { public partial class AccessesTa // クラス拡張宣言 { // データハンドリング属性はべつになくてもいいので省略 public DataSet1.AccessesDataTable GetData_bySQL(string sqlWhere) { this.Adapter.SelectCommand = this.CommandCollection[0]; // テーブルアダプタ[0]番目のSELECTを取得 this.Adapter.SelectCommand.CommandText += " " + sqlWhere; // 後ろにWHERE文を追加 var dt = new DataSet1.AccessesDataTable(); // 入れ物(型づきデータテーブル)を準備 this.Adapter.Fill(dt); // 充填 return dt; } } // of class } // of namespace this.Adapterてのは、TableAdapterが内包しているDataAdapterのことですわ。
補足
shockatzさん お世話になります。 グリッドビューのデータの変更をするときのタイミングとして ボタンコントロールがあり、ボタンが押された時に処理を行い、メソッドを実行したいというのが質問なのです。 shockatzさんのご説明だと、条件となるコントロールが変更される度にグリッドビューが変更されていく感じなのでしょうか? 引数の作成もボタンコントロールで行いたいのですが・・・ 私が根本から勘違いしてますでしょうか? 複雑な動的Where句 であるSQL文を自身で作成し、DataTableのデータソースにしたい、そのトリガーをボタンにしたいという感じなのですが・・・ 何か考え方が間違ってますでしょうか? なにぶんAsp.Net初心者なので、変な質問をしてるでしょうか
お礼
shockatz様、大変お世話になっております。 最新の質問までいろいろとご指導ありがとうございます。 ObjectDataSource とDBの接続方法、動的SQL文の設定、 そのほか、いろいろな接続、変更などの方法の仕方が未熟ゆえ わからない次第でございます。 まだグリッドビューの動的SQLの変更方法など、まだわたくしには早かったかなと質問の回答を見させていただき思って次第でございます。 まずは ご紹介いただいた、赤間本を読破、熟読し、グリッドビュー、リストビューの選定など、改めてご質問させて下さいませ。 その際には初心者にもわかるご回答お待ち申し上げております。 ありがとうございました。