フローをクリアするには:
データベースからデータを取得するため、またはデータを更新するためにのみ使用されるクラスを作成する必要があります
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();
}