CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

关于asp.net实际应用开发、组件开发

楼主yghua8(alpha)2005-06-02 03:01:26 在 .NET技术 / ASP.NET 提问

这几天一直在学习asp.net组件开发,主要是从《asp.net服务器控件与组件开发》、《深入剖析asp.net组件设计》两本书入手,但由于时间有限,圄囵吞枣。特别是对黄忠成的《深入剖析asp.net组件设计》,其技术的深度、描述语言的风格、讲解程度、C#程序(我对VB.NET稍熟些),让我感受到了打击...  
   
          前面我就遭遇此书中一问题,现未得解决之道,见:  
  http://community.csdn.net/Expert/topic/4042/4042913.xml?temp=.8564264  
   
          也没办法,时间不允许我细细研究,立马介予实际,着手开发一个WEB应用程序。  
   
          在欲开发的软件中有很多页面或页面的部分具备其共同性,为了提高页面的复用程度,我可以说是绞尽脑汁。  
          首先还以为能像windows开发一样能页面继承,结果多方考究查找资料后终告泡汤(想一想,如能方便的页面继承多好呀~~`~,不晓得微软那些大头们为何不往这方面多动脑细胞~``   听说2.0中已初俱页面继承功能,但看了些文章对其同样不敢过多奢望);  
          然后想到user   control,但其设计的不可见性、不利于动态布局(我的软件中界面虽具备相当的相似性、酷似模板,但亦多为动态布局)、,使我又不得不放弃。  
          于是否我想到了自定义组件,狂翻了一遍上述两书后,我头大了......  
     
          我原是用PB做windows应用开发的,很多脑筋都还停留在windows应用开发阶段未完全转型,包括分析、设计等....  
           
          ^_^  
   
          [思想篇]  
   
          为了提高界面的一致性、可复用程度、可扩充性并使WEB软件赶向windows的交互能力,我的做法是:  
          1、创建、扩充自身组件库,主要包括几个部分:  
  (一)、两书中、网上能用得着的的组件(其中亦包括吴老大的aspnetpager);  
  (二)、Infragistics   NetAdvantage   2005、ComponentArt、ComponentOne   Studio   ASP.NET(当然得有所取舍,熟悉其中之一都耗时不少);  
  (三)、适合此软件的特定组件,又包括:  
  1)对两项组件的继承:我是把上两项中要用到的组件大多数继承下来,至所以这样做:  
  一是想统一其模板风格设置一些默认属性,避免用时做重复功,如:继承了Infragistics中的WebButtons控件,使其具备适合此软件的颜色大小样式等风格,并干脆再次继承建立了一组常用的既定功能按钮,包括查询、新增、删除等,用到时直接拖入即可;  
  二是想建立这样一个中间层组件,如果到时需求发生变化,就不需改根源(别人的组件代码)也无需去一个个的改应用组件之处了。  
  2)另外一种考虑是强强联合,建立组合组件。如Infragistics   NetAdvantage中的UltraWebGrid+AspNetPager,初步页面中创建在一起测试,效果还不错哟  
  3)自身需扩建控件。说实话,自己对创建自定义控件不敢恭维,到时耗时耗力可能会得不偿失只能先依是否必需而尽可能不为了。如“图片文字链接按钮”,左边一个小图片右边为链接文字的一个链接按钮。  
   
            [实现篇]  
   
            尽管就这样一些不成熟的想法(请多指出不成熟之处,我好立马纠正),实现起来我都觉有力不从心,唉~~`谁叫我接触“倒来得”不久呢~~~  
            OK,我就再实例化一下我的想法,亦描述一下已经遭遇到的问题。  
            我的软件中有一种很通用的页面模板组成如下:  
            ___________________________________________  
            |       TAB页区                                                               |  
            ___________________________________________  
            |       查询条件录入区                                                 |  
            |       内容标题及“图片文字链接按钮”区             |  
            |       查询结果显示区(即WebGrid)                       |  
   
            此页中,我打算创建组件:WebTab、通用功能按钮(如查询)、图片文字链接按钮、通用功能图片文字链接按钮(如新增、删除、退出等)、固定风格WebGrid等。  
            然后创建除TAB页以外部分的UserControl即ASCX文件,ASCX中的组成部分多为上述组件。  
            单击不同的TAB即加载不同的ASCX。  
   
            实现过程中,我熟悉了一下[思想篇]中(一)(二)项的既定组件,尝试着实现(三),但我碰到了一些小问题:  
            1、由于此TAB实际上只相当于一个个的链接按钮,如果使用Infragistics     NetAdvantage中的UltraWebTab似乎有点大财小用?也势必增加页面大小,但如果每个页面都用表格+背景图+文字实现TAB效果,并加上代码控制TAB切换的话,那样每次都复制代码是否用太麻烦并已不具备复用性了。还是自己开发一个简易TAB组件?该如何决择?  
              2、可能是使用了子控件、模版化控件技术的缘故。我在Infragistics   NetAdvantage中一些组件极为复杂的组件时,如UltraWebGrid。我首先在自己的组件项目中引用了这些控件所在位置的相应DLL文件并把这些DLL的“复制到本地”属性设为True,然后继承它们并创建新的组件ABWebContrl。在页面使用新继承创建的组件时,HTML如下:  
   
  <ap:ABWebGrid   id="OAWebGrid1"   style="Z-INDEX:   102;   LEFT:   104px;   POSITION:   absolute;   TOP:   144px"   runat="server"   Width="384px">  
  <DisplayLayout   RowHeightDefault="20px"   Version="4.00"   borderCollapseDefault="Separate"   Name="OAWebGrid1">  
  <AddNewBox>  
  <Style   BorderWidth="1px"   BorderStyle="Solid"   BackColor="LightGray">  
  <BorderDetails   ColorTop="White"   WidthLeft="1px"   WidthTop="1px"   ColorLeft="White"></BorderDetails>  
  </Style>  
  </AddNewBox>  
  <Pager>  
  <Style   BorderWidth="1px"   BorderStyle="Solid"   BackColor="LightGray">  
  <BorderDetails   ColorTop="White"   WidthLeft="1px"   WidthTop="1px"   ColorLeft="White"></BorderDetails>  
  </Style>  
  </Pager>  
  <HeaderStyleDefault   BorderStyle="Solid"   BackColor="LightGray">  
  <BorderDetails   ColorTop="White"   WidthLeft="1px"   WidthTop="1px"   ColorLeft="White"></BorderDetails>  
  </HeaderStyleDefault>  
  <FrameStyle   Width="384px"   BorderWidth="1px"   Font-Size="8pt"   Font-Names="Verdana"   BorderStyle="Solid" Height="200px"></FrameStyle>  
  <FooterStyleDefault   BorderWidth="1px"   BorderStyle="Solid"   BackColor="LightGray">  
  <BorderDetails   ColorTop="White"   WidthLeft="1px"   WidthTop="1px"   ColorLeft="White"></BorderDetails>  
  </FooterStyleDefault>  
  <EditCellStyleDefault   BorderWidth="0px"   BorderStyle="None"></EditCellStyleDefault>  
  <RowStyleDefault   BorderWidth="1px"   BorderColor="Gray"   BorderStyle="Solid">  
  <Padding   Left="3px"></Padding>  
  <BorderDetails   WidthLeft="0px"   WidthTop="0px"></BorderDetails>  
  </RowStyleDefault>  
  </DisplayLayout>  
  <Bands>  
   
  <Infragistics.WebUI.UltraWebGrid.UltraGridBand></Infragistics.WebUI.UltraWebGrid.UltraGridBand>  
  </Bands>  
  </ap:ABWebGrid>  
   
          此组件在设计界面中显示正常,就是QuickDesign属性设置presets没有了模版。但运行浏览时出现“分析器错误”,错误内容如下:  
  -------------------------------------------------------------  
  说明:   在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。    
   
  分析器错误信息:   Infragistics.WebUI.UltraWebGrid.BandsCollection   必须具有类型为  
  “Infragistics.WebUI.UltraWebGrid.UltraGridBand”的项。  
  “Infragistics.WebUI.UltraWebGrid.UltraGridBand”的类型为  
  “System.Web.UI.HtmlControls.HtmlGenericControl”。  
  源错误:    
   
  行   49:   </DisplayLayout>  
  行   50:   <Bands>  
  行   51:    
   
  <Infragistics.WebUI.UltraWebGrid.UltraGridBand></Infragistics.WebUI.UltraWebGrid.UltraGridBand>  
  行   52:   </Bands>  
  行   53:   </ap:ABWebGrid></FONT>  
  -------------------------------------------------------------    
            请问各位大哥,这是为何?该如何解决呢?  
   
            想到哪就写到哪,亦未细整理。  
            已凌晨三点,儿童节早已过,外面居然响起了洒水车的歌声,就先写这些。  
   
            实在是对Asp.net了解不深,对asp.net技术把握不住,所以还是请各位大哥左看右看上看下看仔仔细细的把我评头论足一翻,看我的做法、想法、各个点各个疑虑各个问题、可能出现的问题、学习的方向、前进的道路等等等等多多多多指点迷津,不甚感激。  
  问题点数:100、回复次数:20Top

1 楼itflying(it学习者 )回复于 2005-06-02 06:52:42 得分 5

实在太长,请说明具体问题,,帮顶!!!Top

2 楼jonescheng(小块头无大智慧)回复于 2005-06-02 08:14:47 得分 5

太长了,看不下去了。。Top

3 楼lovelxj(伊斯人,吾谁与归)回复于 2005-06-02 08:41:25 得分 5

做服务器控件   应该是自己从最原始的基础上扩展  
    如果从别人已经完成的控件上进行修改整和     那只能说是用户控件Top

4 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-06-02 08:48:14 得分 5

晕,真多。。  
   
  好像是用户控件。。吧Top

5 楼stickking()回复于 2005-06-02 09:07:29 得分 5

黄忠诚的我最近也在看  
  的确有深度  
  是个挑战  
  相互交流一下  
  zgw1982@gmail.comTop

6 楼koala_swnu(风之仪)回复于 2005-06-02 09:11:42 得分 5

The   article     is   too   long   !    
  Keep   it   up   !Top

7 楼ghchen()回复于 2005-06-02 09:21:57 得分 5

呵呵,接分Top

8 楼ghchen()回复于 2005-06-02 09:22:09 得分 5

互相交流Top

9 楼luckyprg(lucky)回复于 2005-06-02 09:25:16 得分 5

楼主是对自定义控件还不熟。Top

10 楼yghua8(alpha)回复于 2005-06-02 09:27:15 得分 0

起晚了,发现有这么些朋友在关注,先谢啦。  
   
  to   itflying(it学习者)、jonescheng(等待升星)    
  确实长了点...具体的两个问题也就是[实现篇]中的两个问题  
  其中第2个问题说白了就是:  
  我继承了已有自定义控件Infragistics   NetAdvantage的UltraWebGrid创建新的自定义控件ABWebGrid,运行时确出现了“分析器错误”,不知何故?也不知该如何解决。  
   
  to   lovelxj(爱生活爱芳芳)   :  
  从已有自定义控件继承创建服务器控件,我是从项目的角度出发的,原因文中有述。  
  同时对贵言不很赞成,其一、“做服务器控件   应该是自己从最原始的基础上扩展”相信不符合现今开发潮流吧?毕竟我所做的这些服务器控件并不是要做为控件商品。其二、如果从别人已经完成的控件上进行修改整和     那只能说是用户控件。这不是用户控件和服务器控件的区别吧?而且我不喜欢Asp.Net中的User   Controls,虽比Include文件好点但仍感觉太局限。  
   
  to   stickking()   :  
  乐意交流,  
  我的邮件是:yghua8@163.com,QQ:17552774,MSN:yghua8@msn.com  
  一般隐身在线  
   
  谢大家再多点耐心,继续关注,不甚感激  
  Top

11 楼yghua8(alpha)回复于 2005-06-02 09:29:34 得分 0

to   hackate(兰花开香入梦境,独思佳人亦飘然!!)   :  
  还请帮解决一下我的问题,^_^  
   
  各位亦可自己继承一个已有的具备子控件和模板控件的自定义服务器控件试试看,是否也会出现此一问题?Top

12 楼liuchengit(有事您说话)回复于 2005-06-02 09:30:26 得分 0

各位:   我想知道web.config的资料,有朋友建议一下吗?我的邮箱:   liuchengit@sina.comTop

13 楼renyu732(Sysinfo)回复于 2005-06-02 09:31:23 得分 0

先顶,完了回来再看...Top

14 楼Pipiloo(皮皮鲁)回复于 2005-06-02 09:39:49 得分 0

实在太长了,先mark一下Top

15 楼reddeephehe(一声声追问)回复于 2005-06-02 09:48:08 得分 0

mark  
  Top

16 楼lqlling(水晶百合)回复于 2005-06-02 09:58:52 得分 5

太长,确实需要一定时间慢慢看.Top

17 楼Study_Now( ? )回复于 2005-06-02 10:04:17 得分 0

upTop

18 楼yghua8(alpha)回复于 2005-06-02 11:03:29 得分 0

等待...Top

19 楼yghua8(alpha)回复于 2005-06-02 17:05:15 得分 0

自己再顶一下,争取得到大众评叛!  
   
  问题亦重新简述如下:  
  ------------------------------------------------------------  
  我继承了已有自定义控件Infragistics   NetAdvantage的UltraWebGrid创建新的自定义控件ABWebGrid,    
  在页面使用了这个新的自定义控件后,    
  运行时确出现了“分析器错误”,不知何故?也不知该如何解决。  
  各位可以照此测试一下,看是否会出错?  
  亦可自己继承一个已有的具备子控件和模板控件的自定义服务器控件试试看,是否也会出现此一问题?    
  Top

20 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2005-06-03 14:01:23 得分 50

没有用过Infragistics   NetAdvantage,也不知道你是如何从这个控件继承的,不过我做过从DataGrid继承的自定义控件,从没碰到过你说的问题。Top

相关问题

  • ASP的组件开发
  • asp001.net QQ群 ASP技术 组件开发 网络安全
  • .net中自定义组件开发教程
  • !!!!组件开发!!!!
  • 组件开发问题:要使用 asp 中的 response.write 该怎么做?
  • .NET 的XML Web Services与组件开发技术,欢迎进来讨论...
  • win2000Server VB 组件开发
  • 组件开发的问题?
  • ==关于三层组件开发问题==
  • 急急急!!!关于组件开发。

关键词

  • asp.net
  • 控件
  • 组件
  • 页面
  • 自定义控件
  • 分析器
  • 服务器
  • 组件开发
  • 模板
  • 文字

得分解答快速导航

  • 帖主:yghua8
  • itflying
  • jonescheng
  • lovelxj
  • hackate
  • stickking
  • koala_swnu
  • ghchen
  • ghchen
  • luckyprg
  • lqlling
  • webdiyer

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo