遇到的问题:
这段时间在合作开发一个项目,这个项目是经典三层架构的,在U层我们使用的是网站而非项目,而B层和D层使用的是项目。(这里解释一下,这里的项目并非我们整个系统,而是在新建的时候选择的项目和网站,下同。)
我们在传统的项目,经常用到模块,那么我们抽象出来的模块就可以更好复用,这是面向对象中大家都明白的道理。
了解了我们这个问题的背景,下面我来说说这个问题:
在设计过程中,我发现很多地方都要把查到的数据绑定到dropdownlist中。这时我就想能不能把这个绑定的过程抽象出来,抽象成一个方法,这样将来在需要修改的时候我只需要修改我的方法就行,而不是去找那么多的地方一个个修改。
说到这里,我突然想到,前些天米老师在一次项目验收时,给我们讲的关于面向对象的问题。米老师说,其实我们还没有真正明白什么是面向对象,没有体会到面向对象的好处。真正的面向对象不是把写好的代码或者某个编译好的类到处用,而应该是一种引用而非复制。类改了,那么引用这个类的所有的地方都会跟着改。面向对象使得我们没有必要一个个单独去改他们。
其实这个方法很简单,很容易实现。今天之所以拿出来说它,主要是想说说如何在一个网站项目中使用这样的方法。
我们大家都知道,要想让其他类都能使用这个方法,我们需要把这个方法放到一个类中。而面向对象的思想要求我们,对象只能拥有属于它的属性。而通常我们是把这个方法放到一个单独的模块中。但是当我尝试这样做的时候,却不能在一个网站项目中建立这样一个模块。
对于这样一个问题,我是这样解决的:
在网站中新建一个类,这个类会被自动放入到App_Code文件夹中。然后在这个类中建立一个静态的方法,这样我们在U层的类中就可以直接调用这个方法啦!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;//引入需要的类
using System.Web.UI.WebControls;//因为我传入的是一个控件,这个方法要对控件进行操作,所以引入该命名空间
using System.Data;
/// <summary>
///将查到的数据绑定的下拉列表
/// </summary>
public class BindingDrop
{
public BindingDrop()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 将查到的数据绑定的下拉列表
/// </summary>
/// <param name="obj">要绑定的控件</param>
/// <param name="dt">源数据表</param>
/// <param name="textField">显示的字段--字符串型</param>
/// <param name="valueField">绑定的字段--字符串型</param>
public static void bindDrop(DropDownList obj, DataTable dt, string textField, string valueField) //静态方法
{
//绑定数据
obj.DataSource = dt;
//指定显示字段
obj.DataTextField = textField;
//指定绑定值
obj.DataValueField = valueField;
obj.DataBind();
//插入 请选择 项
obj.Items.Insert(0, new ListItem("--请选择--", ""));
}
}这样就可是实现和模块功能一样的一个类,在界面层需要的地方直接使用类名调用该静态方法即可。
1093

被折叠的 条评论
为什么被折叠?



