中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

データソースの限界

ASP.NETでデータソースをいろいろと設定していたりすると、やっぱり限界も見えてきます。

ノーコーディングしましょうといってもいろいろ細かいことをしようとするとやはりClassic ASPに近づいていくという・・・(^^;;

データソースを捨てるとき、(たとえば今回のこの場所では)表示用にデータソースを使っていましたがQueryStringの正当性などを確認する必要があるのでどうしてもPage_Loadでデータを読み込むことになります。


  //スレッドが存在するか、スレッドを表示していいか確認する
  Wankuma.BBS.Library.スレッド.スレッドデータセット.スレッド一件取得Row row = Wankuma.BBS.Library.スレッド.スレッド管理.スレッド一件取得表示用(ThreadID, this.ユーザID取得());
  if (row == null)
  {
   //存在しないスレッドID
   ResponseRedirector.main(Response);
  }

  this.表示中スレッドデータ行 = row;


さらにこの後表示用にデータソースが同じストアドを呼ぶということになり同じトランザクション内で2回同じ処理を呼んでいることになっていました。

なのでデータソースを捨てて一般的なラベルだけに切り替えます。


  <asp:Label ID="ThreadLabel" runat="server" Text='<%# Eval("スレッドタイトル")'></asp:Label><br />

  <asp:Label ID="ThreadLabel" runat="server" Text='<%# this.表示中スレッドデータ行.スレッドタイトル %>'></asp:Label><br />


この変更だけだとデータバインドするタイミングが無いのでrowを設定する瞬間にデータバインドして回らなくてはいけません。


protected Wankuma.BBS.Library.スレッド.スレッドデータセット.スレッド一件取得Row 表示中スレッドデータ行
{
  set
  {
    this._表示中スレッドデータ行 = value;
    this.ThreadLabel.DataBind();
    this.BunruiMeiLabel.DataBind();
    this.ComponentLabel.DataBind();
    this.VersionLabel.DataBind();
  }
  get
  {
    return this._表示中スレッドデータ行;
  }
}


データバインドして回るのがいやならユーザコントロールを作って直接rowをバインドできるようにするか・・・でしょう。

と微妙に使い勝手の枠を超えようとするとうまくいかないのが最近(ここ5年~10年)のプログラミングスタイルですかね・・・

#.aspx側でバインド指定しているのに、それとペアで.aspx.cs(.vb)側で書かなくっちゃいけないってのがね・・・

##プログラムのバグは移送、あれとこれをセットで実行、シーケンス処理なんかでよくおきるのでねぇ

投稿日時 : 2006年8月21日 23:14

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント