web自定义项目,请求思路!200分相送!

杨哥儿 2011-12-05 08:08:50
项目是建立一个框架,由用户自定义子项目内容,并生成相应报表。
需求这样的:
一、框架提供数据库中所有可用字段(名称、类型、约束);
二、用户申请建立一个新子项目。
1、定义子项目名称;
2、定义子项目的所要用的数据:字段名称、字段的数据源(可是常量、变量、数据引用、公式);
3、常量直接输入值,变量为其它已经定义的常量和变量的表达式,数据引用为数据库提供的字段,公式为前三者的组合表达式;
4、用户定义子项目在网页中的界面:位置(left,top)、大小(width,height)、显示控件(textbox,checkbox,button,radio,select,image)、控件样式等;
5、用户定义子项目生成的报表:报表标题、表头字段、表格内容、汇总项等。
三、系统生成该项目,在页面显示结果。
1、生成web页面;
2、在生成的页面中响应用户操作结果,包括用户操作数据的保存;
3、根据用户的操作生成相应报表,并提供导出excel下载。
四、用户可根据需要修改和调整子项目的内容。
目前需要解决的问题:
1、数据库该如何设计?
2、如何实现用户自定义的界面?
3、如何实现用户自定义的报表?
3、如何响应生成的页面中的事件响应?
请用aspx.net完成。java和php我不会,见谅!
4个问题。200分。我只能发100分的帖子,明天加分!
...全文
805 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
杨哥儿 2011-12-13
  • 打赏
  • 举报
回复
谢谢大家支持。我决定不自己做了。发现我的需求在MOSS中可以完成。何必那么费劲。
不过大家的建议很好。结了,给分!
nfclass 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 uself 的回复:]
周一结了!
[/Quote]

今天周一
hejie322 2011-12-12
  • 打赏
  • 举报
回复
一个自己web框架 是每个做web的coder的想法 呵呵 慢慢来 总可以实现的
hwbox 2011-12-12
  • 打赏
  • 举报
回复
参考一下,我的cms系统的思路吧。我也是看着动易有一些功能不足自己想起来做的。


自己定义一套标签系统。包括流程控制标签。
我的是用
{labelclass:labelid id="aaa" parm1="" parm2="" DS="DSaaa"/}
这样的单体标签
{labelclass:labelid id="bbb" parm1="" parm2="" DS="DSaaa"}
....
{/labelclass:labelid}
这样的双体标签,其中DS为数据源
{$CONST:clnstid$}
这样的常量
{CTRL:for value="0" step="1" breakvalue = "10"}
...
{/CTRL:for}
这样的控制标签
{FIELD:fieldname = "" FileLevl = "aaa" }
这样的数据字段控件
======================

怎么可视化定制一个oracle表,基本上就很简单了,我在另一个项目里,就是把oracle管理器的界面抄一下。作成自己的web界面。然后拼sql串做的。不过在每个表名前都强制加了前缀。便于把这些表罗列出来,而又不暴露系统表。

另外,在标签中的ds就是标签用到的数据源,这个数据源中定义一个select 语句,包括一些可替换的参数用{$valuename$}来表示,真用的时候,用label中的同名parm来传值即可。

愚知 2011-12-12
  • 打赏
  • 举报
回复
人工智能、 用户自定义 楼主那个工作量相当之巨大、你不可能穷尽每一种可能出现的方式! 所以只能根据的业务需求外加实际调研、 这样开发的产品才能满足用户的需求!
如何把软件做的更具有脑子、强烈建议楼主往人工智能这个方面前进、前进 让我等膜拜一下、嘿嘿
杨哥儿 2011-12-12
  • 打赏
  • 举报
回复
再等等。还有10个小时。希望能得到更好的建议!
一个好的建议和思路,能让我省多少时间和精力,这是无法估量的。
it085 2011-12-11
  • 打赏
  • 举报
回复
可以用HTML 中的table 和js 进行交互实现,使用HTML中的VML功能再绘制表格,使用AJAX触发事件与实际的数据库交互,实现起来会复杂,效果也不一定会很好,只能给你一个参考的意见了
杨哥儿 2011-12-10
  • 打赏
  • 举报
回复
周一结了!
chenhongjun0624 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qianjin036a 的回复:]

范围太大,不好弄.
关键是你让用户去做的一些事情,本来应该是DBA和架构师做的!

要知道,到最底层的用户,他们能做的事情,就是你给它一个文本框,让他向里头输点东西.如果有两个文本框,就得千叮咛万嘱咐地告诉他这个是用来输这个的,那个是用来输那个的,即使这样,他输过后,你还得在后台检验他输得对不对.如果有一个下拉列表,那要叮嘱的就不是一句话,而是一本书了!

别指望做出一个普适的东西,能……
[/Quote]
学习
杨哥儿 2011-12-09
  • 打赏
  • 举报
回复
突然发现,如果仅仅是个信息发布类,交互性不强的应用是不是可以用office2007的excel services完成?
请大家给个建议?
yzf86211861 2011-12-09
  • 打赏
  • 举报
回复
来 学习下 高手的 思想
hyb3280660 2011-12-09
  • 打赏
  • 举报
回复
我首先说一下楼主语言的选择:无论你使用什么开发语言,这些功能都可以实现,只是复杂度稍微不同。

1、数据库该如何设计?

所有的项目、表单、字段都需要存入数据库,举个简单的例子,一个字段的类型(文本、整数、日期、图片、长文本等)都需要保存到库。这块你可以参考一下cms自定义字段的功能。

对于每个项目不同的业务,建议存储为实体表。cms经常使用虚拟表、虚拟字段,这种不适合业务系统使用。

因为你后面还有报表的需求,虚表或虚字段读取数据比较费事。

2、如何实现用户自定义的界面?

你这个系统面向的业务应该都是差不多的吧,比如有列表界面、编辑界面、审核界面……在后台让用户可以自已选择界面模板,而界面上面的显示通过多功能编辑器,让用户自行调整,把用户调整后的html保存到数据库。
当前端展示的时候,读出这个html,再将html中的特殊标签替换成相应的展现控件。当然这些展现控制无非就是按钮、列表、输入框、Label这些东西。


3、如何实现用户自定义的报表?

自定义的报表,那你就需要提供一个报表设计器了,允许用户上传制作好的报表模板。当展现报表时,你在代码中自动为不同的报表模板加载不同的数据即可。

这里有一个难点,就是上传的报表如何验证有效性,可能报表中的字段,在数据库中根本就不存在。

4、如何响应生成的页面中的事件响应?
我上面在2中说了,页面已经控件化了(自定义控件),每个控件的事件其实已经写好的,你在控件的代码中使用一些属性,可以指定这个控件所执行的业务请求是哪个项目或哪个业务表的就行了。反射实现添加、删除、修改操作。


写的比较粗,如果你还有疑问,可以加我QQ(7999450),给你一些指导。
liaolliso 2011-12-09
  • 打赏
  • 举报
回复
:-),顶顶,这个比较底层点
杨哥儿 2011-12-08
  • 打赏
  • 举报
回复
谢谢30楼!
Toplovejay 2011-12-08
  • 打赏
  • 举报
回复
用自定义表单,把所有需要的控件、HTML等在数据库配置好,根据用户配置保存成XML。
淘淘大师 2011-12-08
  • 打赏
  • 举报
回复
高难度哦
charles_y 2011-12-08
  • 打赏
  • 举报
回复
我当年做的一个工资设定的页面。可以自定义工资项:如基本工资,奖金,房贴,公积金,税(通过公式算出)。。。。,

太长,贴不出来
charles_y 2011-12-08
  • 打赏
  • 举报
回复
表达式可以用javascript来计算。
公式吗自己定义,还可以自定义函数,然后把公式中的变量用实际数字代替。

计算的时候可以使用类似下面的函数:

public static object Calc(string expression)
{
string className = "Calc";
string methodName = "Run";
expression = expression.Replace("/", "*1.0/");

// 创建编译器实例。
ICodeCompiler complier = (new CSharpCodeProvider().CreateCompiler());
// 设置编译参数。
CompilerParameters paras = new CompilerParameters();
paras.GenerateExecutable = false;
paras.GenerateInMemory = true;

// 创建动态代码。
StringBuilder classSource = new StringBuilder();
classSource.Append("public class " + className + "\n");
classSource.Append("{\n");
classSource.Append(" public object " + methodName + "()\n");
classSource.Append(" {\n");
classSource.Append(" return " + expression + ";\n");
classSource.Append(" }\n");
classSource.Append("}");

//System.Diagnostics.Debug.WriteLine(classSource.ToString());

// 编译代码。
CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString());

// 获取编译后的程序集。
Assembly assembly = result.CompiledAssembly;

// 动态调用方法。
object eval = assembly.CreateInstance(className);
MethodInfo method = eval.GetType().GetMethod(methodName);
object reobj = method.Invoke(eval, null);
GC.Collect();
return reobj;

}
杨哥儿 2011-12-08
  • 打赏
  • 举报
回复
看来接受各位的意见,不能做万能的。我只做了个数据页面展示的框架。
目前进度如下:
1.用web编辑器(最简版本,不是ewebeditor或ckediter)完成用户界面的生成,当然是静态的。
用户事件目前只能完成最简单的。如提交和上传数据。动态数据界面还正在探索中。
2.页面数据根据用户操作更新模块,目前正在解决中。
目前最头疼的是表达式分解。
如:[应付款]=[商品数量]*[商品价格]*[折扣]-[预付款]
我目前没有高效的方法把表达式中的变量给分解出来,分别求值后,再放入表达式进行运算。
我没学过编译原理,让大家见笑了。
希望大家多帮忙。
MSDNXGH 2011-12-08
  • 打赏
  • 举报
回复
这个很像内容管理CMS,其它CMS,动易也不错,但也有很多,你可以百度一下,CMS,看看有没有合适的呗
加载更多回复(26)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧