2011-12-15 38 views
0

我正在做一个简单的页面(Default.aspx),其中是一个DropDownList(编号颜色)控件。使用PageLoad方法填充项目很容易。从asp.net中的类文件访问web控件4

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     colors.Items.Add("red"); 
    } 
} etc. .... 

然而,是否有可能以填充颜色从外部类文件(我的意思是位于AppCode夹一些类文件)控制。

谢谢。

回答

2

绝对如此。例如,如果你只是想创造价值的IEnumerable<T>绑定到DropDownList一些通用的工具方法,你会通过这两个对象作为参数传递给方法:

public static void BindDropDownControl<T>(DropDownList dropDown, IEnumerable<T> listValues) 
{ 
    // logic to bind the values to the DropDownList 
} 

是什么让这个作品是事实上类似DropDownList的类别是reference types。这意味着该方法中dropDown的实例不是页面的一个副本,而是与该页面中的相同。因此,使用此方法对其进行的修改将适用于页面上的DropDownList

所以从页面调用它,你会做这样的事情:

哪里colorValues是值的一些列表绑定到列表中。 (并且HttpUtils是包含上述方法的类的名称,但是您可以将其命名为任何想要的名称。)

0

一种选择是创建预先填充了颜色选项的自定义下拉服务器控件。或者,颜色可以存储在数据库表abd中,下拉列表可以从数据库中填充。我从来没有尝试从另一个类文件填充服务器控件。在这种情况下,我可能会使用自定义服务器控件。

+0

我明白你的解决方案,但我想要一个函数,当我需要用颜色填充一些dropdownlist时,我可以调用它 – polohy 2011-12-15 19:52:12

0

这是可能的,毕竟它只是对象引用。考虑封装很重要。如果绑定到下拉列表,这有什么关系吗?关于列表框,或者复选框列表或者gridview等等,你想让其他组件知道web服务器控件的知识吗?理想情况下不是。 Web服务器控件是UI的关注点,而不是数据/逻辑问题。