2012-04-25 33 views
0

我有一个公共方法在我的aspx代码后面调用PhotoDatabinding,它的作用是将数据库绑定到List视图控件。如何访问我的公共方法从后面的aspx代码到公共类?

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(); 

} 

} 

感谢,并感谢所有您的帮助和建议。

+0

什么是'Process'和'PhotoDatabinding'是在类之间的关系?这个类是否创建了一个'Process'的实例,或者创建一个创建它的类? – Servy 2012-04-25 14:46:34

+6

通常,您的页面将使用Process类,而不是其他方式。您正在按层之间的错误方向拨打电话。 – 2012-04-25 14:47:40

+0

我同意大卫这是错误的方向调用。 – Ravia 2012-04-25 14:56:32

回答

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(); 
     } 
    } 

和更新处理

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(); 
    } 
+0

嗨艾德里安,首先我感谢你提供的所有例子。给你更多的想法,我想要实现的是,在我的添加照片页面我有ListView控件与数据绑定和Silverlight [链接](FileUpload)控件,我无法调用PhotoDatabinding方法来更新Listview控件在我的添加照片页面中。 – Flex 2012-04-25 17:03:34

+0

必须有一种方法,以便控件引发一个说明图像上传的事件。 – 2012-04-25 17:07:14

+0

正是......但我无法在Silverlight FileUpload.xap控件上传按钮中引发任何事件。 – Flex 2012-04-26 03:36:58