ASP.NET开发,且编且改,分清职责

本篇Insus.NET使用一个实例,分享在ASP.NET开发时,一个功能一个方法(函数),且编且改,一步一个脚印把实例完成。在方法多变多形式的情况之下,怎样把写出来程序简单明了。

下面是一个Excel文档:
http://download.cnblogs.com/insus/ASPDOTNET/Book1.rar

现在是要读取它,并显示于GridView控件上,方法参考《Excel上传并读取数据http://www.cnblogs.com/insus/p/3814857.html 由于一些字段在本篇中,无用,因此删除之。

"SELECT [性别],[所属部门],[职务],[在职否] FROM [Sheet1$]"

我们在xxx.aspx 的html markup中。拉一个GridView控件,并使用自定义模版:

读取Excel演示:

现在要求来了,用户需要读取与加载Excel至GridView之后,希望能编辑数据。但不想按照传统方式一样,一行一行点击编辑铵钮之后,才能进入编辑状态,而一开始就是能编辑。怎样实现编辑,四个字段,前后字段“性别”与“在职否”,只有两个值。“男”与“女”; “在职”与“离职” 可以使用RadioButtonList控件。而中间两个字段中“所属部门”与“职位”,多值呈现,可以使用DropDownList控件:

既然有控件,我们需要拿数据源来给这些控件数据绑定。由于这些控件均是在GridView控件内的,绑定在OnRowDataBound事件中进行。

四个嵌套在GridView控件内的控件数据绑定:

上面代码示例中,Insus.NET只做两个控件的示意,一个DropDownList和一个RadioButtonList。它们的数据源有来自数据库,有来自函数。你需要指定显示的数据(DataTextFeid),哪一个用作后端获取的数据(DataValueField)。这需要根据你开发时的需求了。

写到这里,你发现四个控件在绑定数据源时,有代码冗余:

 ccc.DataSource = xxx;
 ccc.DataTextField = yyy;
 ccc.DataValueField = zzz;
 ccc.DataBind();

我们可以重构为一个方法,在重构之前,我们会遇上二个问题要考虑的,一个是控件不同。RadioButtonList和DropDownList;二是被绑定的数据源不同,一些为泛型,DataTable等。处理好这些,需要想出一个万全之策。如:

看到两个红箭头否,由于RadioButtonList和DropDownList控件,均是继承了ListControl控件。数据源不管是什么,均宣告为object即可。然后上面的四个控件的绑定,就可以使用这个方法了:

如果把注释掉的代码拿掉,是不是简洁多了?看看运行时浏览的效果:

现在看到一个问题,中间两个DropDownList下拉列表,没有“--选择--”选项。怎样加入第一个项呢?哦,这个简单:

添加上面两行高亮代码,得到地效果如下:

到现在为止,我们只是对控件进行数据源绑定。回头来看看下载的Excel数据:

正确来说,应该是把数据原始状态一起绑定,OK,解决此问题,再写程序:

把每笔记录与控件绑定的数据时行匹配,匹配的,改变状态。
浏览看看结果:

嗯,越来越接近理想的要求了。开发就是这样,一个功能,一个方法或是一个函数,分清职责。
呵呵明眼人,又会看到上面的代码有冗余了:

 foreach (ListItem li in ccc.Items)
                    li.Selected = li.Text == drv["xxx"].ToString() ? true : false;

Insus.NET在开发过程中,一旦发现有代码冗余,必需重构之,不然看上去就不舒服。创建一个方法吧:

有关这个方法,你还可以参考另外一篇《没有什么,开发ASP.NET时随便写写,想到什么写什么http://www.cnblogs.com/insus/p/3810032.html 将学到更好的方法重构。

写好这个公用的方法之后,我们去改写那些冗余的代码:

一步一个步骤,把程序写好......

ASP.NET开发,且编且改,分清职责

时间: 2024-09-30 19:03:30

ASP.NET开发,且编且改,分清职责的相关文章

asp.net 开发时的小问题

最近公司老板让我用asp.net开发公司的小的ERP系统,在用jquery ajax访问aspx.cs文件中的[WebMethod]的静态方法时老是遇到身份验证的错误信息,头疼了好久找不到方法,终于在一个外国的外码分享网站找到了解决的方法,就是把APP_Code里的RouteConfig.cs文件中的 settings.AutoRedirectMode = RedirectMode.Permanent 改为 settings.AutoRedirectMode = RedirectMode.Off

asp.net5开发中DNX SDK版本的影响

某次asp.net5开发中遇到了一个很奇怪的问题,引用部分的nuget包没有显示任何错误,如下图: 但是编译时出现了几百个错误: 错误基本都是形如“CS0246 The type or namespace name 'Key' could not be found (are you missing a using directive or an assembly reference?) ”这种错误, 给人的第一感觉就是nuget包引用出了问题,但是不管你怎么检查就是查不出来哪里错了. 更离奇的是

asp.net开发的调试方法集合

调试是写代码一共非常重要的步骤,掌握好调试的技巧对于编程有事半功倍的效果,下面是我总结的菜鸟用方法 1.关于HTML和JS的调试 JS曾经是我最讨厌的错误,因为大多数错误VS不报错, 而且有时候A函数的错误会影响到B函数运行不了(没有交集) (1) js函数更改后在页面执行没反应 有时会发现,当你改了JS函数后运行结果还是跟没改的一样,那是因为浏览器缓存的问题,只要刷新一下就行,如果发现还不行,就按开发者工具(F12)里面清理下缓存,这个保证没问题了 (2) 若发现JS函数不执行,而且又不报错,

ASP.NET开发,从二层至三层,至面向对象 (5)

此是一系列博文,最后一篇了.也是面向初学者而作,望你们能有更好,更多对ASP.NET面向对编程了解与认识. 前一篇中<ASP.NET开发,从二层至三层,至面向对象 (4)>http://www.cnblogs.com/insus/p/3837898.html 中,Insus.NET让大家了解到无需再写SQL语句,只管传入字段,或值,或条件,文中虽然列举了一些例子,但还可以任凭发挥与扩展. Insus.NET在第三篇<ASP.NET开发,从二层至三层,至面向对象 (3)>http:/

ASP.NET开发,简化与封装

微软的ASP.NET的开发,就是面向对象的编程,当然前端也能体验至面向对象的话,使用Web控件也必须的. 任一控件,我们均可以在后端.aspx.cs或.aspx.vb程序中new一个对象出来. 很多场合里,在开发ASP.NET开发中,后端与前端交互,我们使用控件确实能方便与快捷互通. 本篇所涉及的内容以html markup标签与javascript(或jQuery)无关,因为演示的是Web控件应用.Insus.NET经常会针对开发的应用程序,写一些常用或是特定的对象或是控件.在一起开发的团队的

使用ASP.NET开发的网站,怎么把动态的页面静态化?

使用asp.net 开发的网页程序,使用URLRewriter.dll 实现静态化.A. 下载URLRewriter.rar,解压后放在/bin/目录下B. 将URLRewriter.rar 加入工程引用.C. 配置IIS 站点,将扩展名为html 指向处理程序aspnet_isapi.dll. IIS 站点->属性->主目录->配置->添加 可执行文件和aspx 处理相同,都是 c:\windows\microsoft.net\framework\v2.0.50727\aspne

ASP.NET开发,从二层至三层,至面向对象 (4)

继续上一篇<ASP.NET开发,从二层至三层,至面向对象 (3)>http://www.cnblogs.com/insus/p/3826706.html .我们更深层次学会了逻辑层对象,即各个具体对象与数据库之间的逻辑类.  我们有分为有处理Access的SQL语句和SQL Server的SQL语句的,还有处理存储过程和参数的. 今天Insus.NET再从处理SQL语句对象,再创建一个对象叫SqlStatement吧.让用户引用这个类时,无需再写SQL语句,只管传入字段,或值,或条件. 实现之

ASP.NET-FineUI开发实践-9(四)

现在是这么个问题,在开发中表格是动态出来的,就是标准板是全部字段列出,客户要根据情况列出自己想要的,在增加操作页面的同时要是能用前台自带的功能直接保存到后台就好了,现在的列显示和隐藏是不回发的. 1.FineUI引用的extjs是ext-part1.js,这就不说了,以前截过图,这个文件是压缩的,参数也是简化的不好看,其实这个就是ext-all.js,ext-all哪来的呢,就是extjs官方实例里下的,下来之后也是压缩的,旁边还有个不压缩的,ext-all-debug.js ,完全可以看,那我

ASP.NET-FineUI开发实践-1

用.Net开发3年,主要接触资产管理,生产流程,质量追溯,.Net在这方面还是很靠谱的.2月低接触FineUI,那时版本是3.0+,第一眼让我想起了ExtJs,其实就是用.Net封装了ExtJs让ASP.NET开发更有效率,实际用起来确实是这样. ASP.NET的回发确实让人头疼,很多东西即使结合前台Js也用的很别扭,而ExtJs在.Net开发环境下又很复杂完全是另一种语言,即使后来有ExtJs For .Net也用不好,结果是没用起来.FineUI处理回发的机制刚好结合了ExtJs和 ASP.