我将对象(书籍)添加到数组中,因为我将它们添加到位于Web服务中的数据库中。我的想法是通过显式绑定到数组列表来将这些书籍显示在gridview中(在deffault.aspx中)。我遇到的问题是gridview位于deffault.aspx中,并且将书籍添加到arraylist的过程完全位于不同的页面上,因此我似乎无法从gridview访问数据源programaticaaly。 是否有一种方法可以将arraylist数据绑定到gridview,即使它们在本例中位于不同的页面上?
亲切的问候
我将对象(书籍)添加到数组中,因为我将它们添加到位于Web服务中的数据库中。我的想法是通过显式绑定到数组列表来将这些书籍显示在gridview中(在deffault.aspx中)。我遇到的问题是gridview位于deffault.aspx中,并且将书籍添加到arraylist的过程完全位于不同的页面上,因此我似乎无法从gridview访问数据源programaticaaly。 是否有一种方法可以将arraylist数据绑定到gridview,即使它们在本例中位于不同的页面上?
亲切的问候
我认为你需要重构一下。取出所有负责操纵数据列表和书籍的代码,并将其放入某种业务逻辑层,可从您的页面的任意访问此类层。
Adam在此基础上调用Adam - 除非将网格拉出到用户控件中,并且包含用户控件中的所有逻辑,否则您需要重构,但通常希望代码能够访问网页之外的数据。只是因为你'可以'把这段代码放在一个页面中并不意味着它应该在那里,你应该有单独的代码类,就像上面提到的Adam可以从任何页面访问的一样。 –
我从来没见过一个亚当我不喜欢:) –
在您的站点中创建一个新的.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的建议也不错。将业务逻辑分离为单独的项目几乎总是一个好主意。尽管尝试这一点。
+1 - 这*是*我的建议 - 它不一定是一个单独的项目,如果它足够小;最主要的是从网页中获取代码。 –
感谢您的意见。 – Arianule
Arianule我看到你是新来的SO。如果您觉得有帮助(当然,如果您感觉不适合),最好将回答标记为答案。谢谢 – MorganTiley
请分享您的代码细节以便更好地理解。 – gordanvij