0

私の aspx コード ビハインドには、PhotoDatabinding というパブリック メソッドがあります。これは、データベースをリスト ビュー コントロールにバインドすることです。

public void PhotoDatabinding()
{


lnqPhotoDataContext dbCon = new lnqPhotoDataContext();
var res = from p in dbCon.Photos orderby p.PhotoID descending select new {          p.PhotoID, p.FileName };

    lvSubAlbumDB.DataSource = res;
    lvSubAlbumDB.DataBind();

 }

ここで、Process というパブリック クラス内に、UpdateSave というメソッドがあります。私の質問は、このように見えるように PhotoBinding メソッドにアクセスするにはどうすればよいかです

public class Process
{
public UpdateSave()
{
    ....some code
    PhotoDatabinding();

}

}

皆様のご協力とご提案に感謝いたします。

4

1 に答える 1

1

フローをクリアするには:

データベースからデータを取得するため、またはデータを更新するためにのみ使用されるクラスを作成する必要があります

public class PhotoAccess
{

  public class PhotoInfo
  {
    public int PhotoID {get; set;}
    public string FileName {get; set;}
  }

  public IEnumerable<PhotoInfo> GetPhotos()
  {
   using ( var dbCon = new lnqPhotoDataContext())
   {
      var res = from p in dbCon.Photos 
            orderby p.PhotoID descending 
            select new PhotoInfo 
                       {
                          p.PhotoID, 
                          p.FileName 
                       };
      return res.AsEnumerable();
    }
  }
  public bool UpdateSave(...)
  {
      ... code to do update or save, use here only classes for working with the DB
  }
}

次に、ページのコードビハインドで

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostBack)
   {
       var dataAccess = new PhotoAccess();
       var items = dataAccess.GetPhotos();

       lvSubAlbumDB.DataSource = items;
       lvSubAlbumDB.DataBind();
   }
}
protected void btSave_OnClick(object sender, EventArgs e)
{
    var dataAccess = new PhotoAccess();
    dataAccess.UpdateSave(...pass here the parameters or an object which is going to be inserted);

    var items = dataAccess.GetPhotos();

    lvSubAlbumDB.DataSource = items;
    lvSubAlbumDB.DataBind();
}

バインディング コードを Page クラスの別のメソッドにリファクタリングすることもできます。

private void BindAlbum()
{
   var dataAccess = new PhotoAccess();
   var items = dataAccess.GetPhotos();    

   lvSubAlbumDB.DataSource = items;
   lvSubAlbumDB.DataBind();
}

また、ページの読み込みは次のようになります。

 protected void Page_Load(object sender, EventArgs e)
    {
       if (!Page.IsPostBack)
       {
           BindAlbum();
       }
    }

および Update ハンドラー

 protected void btSave_OnClick(object sender, EventArgs e)
    {
        var dataAccess = new PhotoAccess();
        dataAccess.UpdateSave(...pass here the parameters or an object which is going to be inserted);

        BindAlbum();
    }
于 2012-04-25T15:07:48.570 に答える