一、 我个人觉得,对于服务器控件,能不用的地方就尽量不要使用。比如说,能用html的table来展现的数据,就不必要使用Repeater,而能用Repeater很好展现数据的时候就不必要使用DataList,逼不得已才使用GridView以及DetailsView等等。牛刀也能杀鸡,但更合理的做法应该是让牛刀在杀牛的时候才使用。所以,我在使用控件的时候,考虑更多的是让代码尽量简洁高效,但绝不是偷工减料。
二、 我个人觉得,即使在使用服务器控件的时候,相关的代码应该尽量在后台完成。这样做的原因,一是提高了代码的灵活性;二是提高了代码的可重用性。毕竟aspx前台页面承载的东西太多,HTML、CSS、JavaScript已经让它变得很臃肿,加之在VS 2005中,aspx前台页面是不能调试的(VS 2008中应该可以了),要是再把一些服务器控件的代码过多的堆砌上去,可想而知,它的可读性和维护性是多么让人晦涩的。
三、 我个人觉得,对于数据库访问方面的一些技术和控件,应该尽量使用权威性和大众化的。权威性的东西(我这里意指得到大多数人认同的东西)在一定程度上就表示了它的健壮性、安全性以及可行性。观众的眼睛是雪亮的,所以我更相信群众。而大众化的东西在团队编程和版本更新等等方面更容易融合。所以,在简单的项目开发中,数据库访问方面我认为一般使用SqlHelper或者企业库就能够应付;而对于复杂庞大的系统,能够用上LINQ或者NHibernate也应该足够。毕竟我们是在帮客户开发产品,客户喜欢的应该是最美的结果,而不是最复杂的技术。
二、在aspx.cs类文件中,把GridView控件的各种外观设置,数据绑定等等都用代码的形式控制,这样做的好处是对GridView能够灵活的控制,代码的重用性极高。弱点应该是代码量比较大(或许还有我看不见的)。
Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//
myself
using System.Drawing;
public
partial
class _Default : System.Web.UI.Page

{
private Employees.Employees_BLL bll =
new Employees.Employees_BLL();

protected void Page_Load(
object sender, EventArgs e)

{
if (!IsPostBack)

{
//设置GridView外观样式

setGridViewStyle();

//创建及设置Fields字段

setFields();

//设置 GridView 数据源绑定

GridBind();

}
//以后台的方式添加 GridView 的各类事件

myGrid.RowEditing +=
new GridViewEditEventHandler(myGrid_RowEditing);

myGrid.RowUpdating +=
new GridViewUpdateEventHandler(myGrid_RowUpdating);

myGrid.RowCancelingEdit +=
new GridViewCancelEditEventHandler(myGrid_RowCancelingEdit);

myGrid.RowDeleting +=
new GridViewDeleteEventHandler(myGrid_RowDeleting);

}

方法 方法

// GridView 编辑操作
protected void myGrid_RowEditing(
object sender, GridViewEditEventArgs e)

{
//设置编辑行的索引

myGrid.EditIndex = e.NewEditIndex;

//设置更新与取消按钮之背景颜色

myGrid.Columns[
0].ControlStyle.BackColor = Color.LightSteelBlue;

myGrid.Columns[
1].ControlStyle.BackColor = Color.LightSteelBlue;

myGrid.ShowFooter =
true;
//设置GridView在编辑模式时,TextBox字段宽度及背景颜色
//EmployeeID字段

myGrid.Columns[
2].ControlStyle.Width =
80;

myGrid.Columns[
2].ControlStyle.BackColor = Color.LightBlue;

myGrid.Columns[
2].FooterText =
"不可编辑";

myGrid.Columns[
2].FooterStyle.BackColor = Color.Red;
//LastName字段

myGrid.Columns[
3].ControlStyle.Width =
80;

myGrid.Columns[
3].ControlStyle.BackColor = Color.LightBlue;

myGrid.Columns[
3].FooterText =
"不可编辑";

myGrid.Columns[
3].FooterStyle.BackColor = Color.Red;
//FirstName字段

myGrid.Columns[
4].ControlStyle.Width =
80;

myGrid.Columns[
4].ControlStyle.BackColor = Color.LightBlue;

myGrid.Columns[
4].FooterText =
"可编辑";

myGrid.Columns[
4].FooterStyle.BackColor = Color.Red;
//Title字段

myGrid.Columns[
5].ControlStyle.Width =
100;

myGrid.Columns[
5].ControlStyle.BackColor = Color.LightPink;

myGrid.Columns[
5].FooterText =
"可编辑";

myGrid.Columns[
5].FooterStyle.BackColor = Color.Red;
//Address字段

myGrid.Columns[
6].ControlStyle.Width =
120;

myGrid.Columns[
6].ControlStyle.BackColor = Color.LightPink;

myGrid.Columns[
6].FooterText =
"可编辑";

myGrid.Columns[
6].FooterStyle.BackColor = Color.Red;
//City字段

myGrid.Columns[
7].ControlStyle.Width =
80;

myGrid.Columns[
7].ControlStyle.BackColor = Color.LightGreen;

myGrid.Columns[
7].FooterText =
"可编辑";

myGrid.Columns[
7].FooterStyle.BackColor = Color.Red;

GridBind();

}
// GridView 更新操作
protected void myGrid_RowUpdating(
object sender, GridViewUpdateEventArgs e)

{
if (e.NewValues != e.OldValues)

{

Employees.Employees_Model model =
new Employees.Employees_Model();

model.EmployeeID = Convert.ToInt32(myGrid.Rows[e.RowIndex].Cells[
2].Text.Trim());
//Employees_DAL 中的 where 条件为 EmployeeID and LastName, 所以 LastName 不能更改

model.LastName = myGrid.Rows[e.RowIndex].Cells[
3].Text.ToString();

model.FirstName = ((TextBox)myGrid.Rows[e.RowIndex].Cells[
4].Controls[
0]).Text.ToString();

model.Title = ((TextBox)myGrid.Rows[e.RowIndex].Cells[
5].Controls[
0]).Text.ToString();

model.Address = ((TextBox)myGrid.Rows[e.RowIndex].Cells[
6].Controls[
0]).Text.ToString();

model.City = ((TextBox)myGrid.Rows[e.RowIndex].Cells[
7].Controls[
0]).Text.ToString();
//Employees.BLL.Employees_Model bll = new Employees.BLL.Employees_Model();

bll.Update(model);

//取消编辑时隐藏Footer

myGrid.ShowFooter =
false;
//设置"编辑"和"删除"按钮还原为系统定义的颜色

myGrid.Columns[
0].ControlStyle.BackColor = Color.LightPink;

myGrid.Columns[
1].ControlStyle.BackColor = Color.LightPink;

myGrid.EditIndex = -
1;

GridBind();

}

}
// GridView 取消事件
protected void myGrid_RowCancelingEdit(
object sender, GridViewCancelEditEventArgs e)

{
//取消编辑时隐藏Footer

myGrid.ShowFooter =
false;
//设置"编辑"和"删除"按钮还原为系统定义的颜色

myGrid.Columns[
0].ControlStyle.BackColor = Color.LightPink;

myGrid.Columns[
1].ControlStyle.BackColor = Color.LightPink;

myGrid.EditIndex = -
1;
//取消编辑状态

GridBind();

}
// GridView 删除操作
protected void myGrid_RowDeleting(
object sender, GridViewDeleteEventArgs e)

{
//设置更新与取消按钮之背景颜色

myGrid.Columns[
0].ControlStyle.BackColor = Color.LightSteelBlue;

myGrid.Columns[
1].ControlStyle.BackColor = Color.LightSteelBlue;
// 获取 Employees_DAL 中的 where 条件: EmployeeID and LastName
int strEmployeeID = Convert.ToInt32(myGrid.DataKeys[e.RowIndex].Values[
0]);
string strLastName = myGrid.Rows[e.RowIndex].Cells[
3].Text.ToString();

bll.Delete(strEmployeeID, strLastName);
//删除

GridBind();

}

}