2011-04-20 69 views
0

还有将arraylist绑定到gridview

我将对象(书籍)添加到数组中,因为我将它们添加到位于Web服务中的数据库中。我的想法是通过显式绑定到数组列表来将这些书籍显示在gridview中(在deffault.aspx中)。我遇到的问题是gridview位于deffault.aspx中,并且将书籍添加到arraylist的过程完全位于不同的页面上,因此我似乎无法从gridview访问数据源programaticaaly。 是否有一种方法可以将arraylist数据绑定到gridview,即使它们在本例中位于不同的页面上?

亲切的问候

+0

请分享您的代码细节以便更好地理解。 – gordanvij

回答

1

我认为你需要重构一下。取出所有负责操纵数据列表和书籍的代码,并将其放入某种业务逻辑层,可从您的页面的任意访问此类层。

+0

Adam在此基础上调用Adam - 除非将网格拉出到用户控件中,并且包含用户控件中的所有逻辑,否则您需要重构,但通常希望代码能够访问网页之外的数据。只是因为你'可以'把这段代码放在一个页面中并不意味着它应该在那里,你应该有单独的代码类,就像上面提到的Adam可以从任何页面访问的一样。 –

+0

我从来没见过一个亚当我不喜欢:) –

1

在您的站点中创建一个新的.cs文件。如果你正在运行老式的网站,把它放在你的App_Code文件夹中,否则,你可以把它放在任何子目录: Books.cs

public class Books { 
     public static ArrayList GetBooks() { 

      return new ArrayList() { "Book1","Book2","Book3"}; 
     } 
} 

然后,在你的aspx页面代码隐藏可以绑定在GridView到这个新方法:

protected void Page_Load() { 
    GridView1.DataSource = Books.GetBooks(); 
    GridView1.DataBind(); 
} 

Adam Rackis的建议也不错。将业务逻辑分离为单独的项目几乎总是一个好主意。尽管尝试这一点。

+0

+1 - 这*是*我的建议 - 它不一定是一个单独的项目,如果它足够小;最主要的是从网页中获取代码。 –

+0

感谢您的意见。 – Arianule

+0

Arianule我看到你是新来的SO。如果您觉得有帮助(当然,如果您感觉不适合),最好将回答标记为答案。谢谢 – MorganTiley