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

自定义字段的解决方案

楼主gmfirefox(荒诞居士)2005-05-29 22:53:18 在 .NET技术 / C# 提问

有关自定义字段的解决方案,希望大家踊跃讨论!  
  问题提出:  
          有时我们在某个project中可能会遇到这种情况,就是有一个User表,但由于User表中的某些字段可能在设计时并未考虑到,由于扩展的需要,在系统release后必须加入某些字段,这种情况我们  
  往往不会去修改原有的系统,而是在设计时就预留了一个自定义字段的功能。以下是我对该问题的解决思路,可能还存在一些问题,权当抛砖引玉。  
          基本思想就是将列转化为列,增加一个表CustomField(PkId,FieldName,FieldDataType,FieldDefaultValues,ControlType);  
  UserCustomField(PkId,UserPkId,CustomFieldPkId,FieldValue)  
  如果这样设计,可能会遇到的问题:  
  1.在新增user页面,需要动态加入自定义字段所对应的控件到指定的位置,并且布局须与原页面一致  
  2.编辑时需动态载入自定义字段对应的控件,并赋予其初始值  
  可能还会有些其他问题,希望大家指出问题,并提出最终的解决方案,也好让之后碰到类似问题的人能有章可循。 问题点数:100、回复次数:12Top

1 楼gmfirefox(荒诞居士)回复于 2005-05-29 22:58:30 得分 0

其中UserCustomField是User和CustomField之间的一个关系表Top

2 楼gmfirefox(荒诞居士)回复于 2005-05-29 23:00:45 得分 0

写错,是将列转化为行Top

3 楼gmfirefox(荒诞居士)回复于 2005-05-30 09:08:32 得分 0

没人进,再顶Top

4 楼zhongwanli(㊣【为了老婆,二次重构____然后升★★】㊣)回复于 2005-05-30 09:13:12 得分 10

这种东西,想法是好,又想过。  
   
  回增加系统的负载。Top

5 楼gmfirefox(荒诞居士)回复于 2005-05-30 11:01:34 得分 0

不得已,用用激将法。  
  难道CSDN没有高手了吗?Top

6 楼gmfirefox(荒诞居士)回复于 2005-05-30 12:14:03 得分 0

加分了,讨论激烈的话,继续加分Top

7 楼gmfirefox(荒诞居士)回复于 2005-05-30 21:29:48 得分 0

感觉用简单工厂模式模式,根据不同的需求来生成不同的实例应该可以搞定Top

8 楼mba9001(两年不见,csdn变肥了)回复于 2005-05-30 22:19:59 得分 10

upTop

9 楼allanli(若尘)回复于 2005-05-30 23:38:35 得分 40

在ADO.NET下,你跟本就可以动态生成更新表语句,所以你就完全可以用一个类去编辑一个动态的表(字段名称与字段数量完全不固定)  
  在.NET   FrameWork下,你完全可以动态生成任何组件(甚至动态编译代码),所以你可以根据你的后台配置动态布局你的用户界面.  
   
  我现在正在使用的一个类,你可以任意指定一个具有主键的表给他,他就可以对该表进行任意的添加修改删除操作,各个字段的编辑组件可以任意指定(类型和位置大小等)  
  Top

10 楼gmfirefox(荒诞居士)回复于 2005-05-31 10:26:46 得分 0

因为采用的是NHibernate框架,所以动态更改表基本上不可能。因为那样不仅要更改表,还要更改配置文件及其关系等。并且还要考虑多国语言的配置,所以我是觉得应该提出一个更好的解决方案,感谢若尘的回答!Top

11 楼allanli(若尘)回复于 2005-05-31 11:20:28 得分 0

功能需求才是决定你采用什么技术的关键,既然NHibernate框架达不到你的需求,那么你还用他干嘛!  
   
  我现在的设计完全基于.NET自带组件,可以达到应对多变的需求而不用修改源代码,基本就是修改配置就可以了.Top

12 楼longgui(龙不归)回复于 2005-05-31 11:29:37 得分 40

就这样可以了,数据类型就定义为三类就可以了,不然很麻烦   的!  
  字符、数值和枚举三种,可以加长度和精度控制Top

相关问题

  • 有什么办法让客户自定义水晶报表的字段。请教大虾的解决方案
  • 如何自定义报表的字段?
  • 怎样自定义字符串型自增加字段?
  • 如何在VB的DataReport里输出“自定义”的字段值?
  • Crystal Report10中如何给报表字段自定义
  • 为什么自定义的字段不能使用呢?
  • 处理blob字段里的自定义类型单元数据
  • 如何给TClientDataSet自定义字段,并能通过赋值增加记录?
  • 怎么在web service中定义一个自定义类(类中只包括字段和属性),然后在代理类中可以看到该自定义类?
  • 高分征求.NET下自定义报表解决方案!!!

关键词

  • 字段
  • 解决
  • 组件
  • 修改
  • 需求
  • 系统
  • 自定义
  • 表
  • 动态
  • 解决方案

得分解答快速导航

  • 帖主:gmfirefox
  • zhongwanli
  • mba9001
  • allanli
  • longgui

相关链接

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

广告也精彩

反馈

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