又有人说了,真笨,我直接拖一个DATAGRID然后再这个基础上加按纽,模板列,排序,详细连接好不好啊,还用特意做个
控件吗?有很抱歉的告诉你,如果是1000个DATAGIRD,每一个都有这些功能的一种或几种,那么你后台够写的了,即使你抽象
出一层、封装出一个专门的DataGirdBuilder类,也够复杂的,各种重载方法,晕。
那么使用样式绑定式的开发就简单了,给DataGird个排序的样式(比如CssClass=sort),后台几句代码,或者干脆不写(
你的准备比较充足),就可以了,再加个列变为删除按钮(比如其中的一个列里ItemStyle CssClass="delbtn"),就可以了,
别的DataGrid不需要排序,那么样式去掉。而后页面类里干干静静。样式绑定后变化的元素传值到统一的业务对象进行处理,
一切都很规矩。
3 实现
利用我之前做过的AJAX库,再结合javascript脚本构建一个这样的库不成问题。自然,跟做烧饭做菜一样,这里选料非常的 中.国.站.长.站
重要,这里我要选用来自Dean Edwards和Tino Zijdel的事件操作脚本库(common.js)和Neil Cro~~~~y制作的样式基本操作库(
css.js)来做好我们这道美味,噢,当然,还有大名鼎鼎的prototype.js库.
好了,,前台的制作工序基本完成。
然后就是利用我前一阵子做的AJAX库了。
假设是删除,QueryString: command=delrow&JS生成的参数……
则后台调用AjaxDelRow.cs
protected override void DoAjax()
...{
// 搜集参数
string parlist = request.Params["pars"];
string[] paritem = parlist.Split(''|'');
Hashtable hash = new Hashtable(paritem.Length);
for(int i=0;i<paritem.Length-1;i++)
...{
string[] paritempart = paritem[i].Split(''^'');
hash.Add(paritempart[0],paritempart[1]);
Www.Chinaz.com
}
bool isDeled = false;
string table = request.Params["table"];
// 判断来源
if(table!=null)
...{
if(table.Equals("dgBigclassmanage")) //DATAGRID的ID号
...{
// 调用对应业务外观的DAO来删除
// hash["0"]为datagrid的第0列,假设第0列传过来是ID值
isDeled = (new BusinessFacade()).DeleteById(hash["0"].ToString());
}
if(isDeled)
...{
Output("true");
}
else
...{
Output("false");
}
}
AjaxDelRow制作流程请参考.NET下的简单AJAX处理库
