明细单输入时,大家用什么方式,什么控件来设计输入界面?

mostone 2007-05-26 08:37:25
请大家帮顶,希望能“圆满”取得答案:-)

在WIN FORM里,那肯定是用grid,而且也是非常常见的,但我不知道在asp.net(2.0)下使用什么。

遇到的问题具体是:表单在提交前,增加或删除明细行,是不作保存的。而GridView,默认是直接与后台数据库互动操作,每一次增加删除,都会直接操作数据库,而本人想知道,除了使用数据库临时表外,是否还有其它更好的解决之道。

1、用GridView?再创建一个DataTable,通过DataBind()显示。这里有一个问题是,DataTable或是DataSet是无法直接拖到页面上的,那也就意味着无法在每次的PostBack之前,保存数据。经测试,PostBack后,再次访问GridView的DataSource是Null。
想到的解决办法有两个,一是从GridView中还原DataTable,通过遍历GridView.Rows.Cells;另外就是,将DataTable保存下来,如将其置入ViewState中。感觉不太理想。

2、直接使用HtmlTable,再通过Javascript进行操作,提交时,取出每行数据,置入HiddenField。这个方案,似乎太繁杂了点,要求也很高,若没有现成的ajax功能,完全自己写,又要至少兼容FF与IE,工作量大了点吧。

3、将主表与明细表的提交分成两个页面。
主表/明细表View
|
--------主表编辑
|
---------明细行编辑
但这样的输入界面设计,相当于硬生生的将一体的对象给拆分了,又增加了用户的操作步骤,很难令人接受。

除此之外,不知道是否有更好的解决方案。恳请大家慷慨相助!

分不是问题,可以再加(单个帖最多只能给100分,可能是等级低的限制吧)
...全文
1177 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
mostone 2007-06-04
  • 打赏
  • 举报
回复
给分好累。。。。
mostone 2007-06-02
  • 打赏
  • 举报
回复
已经有段时间了,后天结帖吧。
mostone 2007-06-02
  • 打赏
  • 举报
回复
to icezs(ice):
方法是有的,在我的问题描述及各位热心朋友的回帖中,到目前为至,个人认为使用客户端脚本来实现会是个比较理想的选择。(Javascript/Ajax)。
关闭窗口可以处理window.unload事件(DOM事件吧)
icezs 2007-06-01
  • 打赏
  • 举报
回复
B/S里,单笔记录有变化的话都要post到Server,
有没有什么方法做到像 Winform那样,取回一定数量的记录,对这些记录处理(修改,删除),并新增记录时不提交到server上,而是让用户在客户端点击update后才提交,或者是关闭窗口时弹出提示。
executemylove 2007-05-28
  • 打赏
  • 举报
回复
用ajax处理吧。动态的增加html
mostone 2007-05-28
  • 打赏
  • 举报
回复
To: dracula1133
网上查了下,DetailsView与FormView的区别主要是编辑模板,前者自动以表格显示单条数据,后者需要自己定义模板,未发现可以显示多条记录并编辑的功能。
viol 2007-05-28
  • 打赏
  • 举报
回复
主表:formview
明细表:使用htmltable+input,动态增加表格行,保存时再一个个取出来。
dracula1133 2007-05-28
  • 打赏
  • 举报
回复
DetailsView正好解决你的问题吧
mostone 2007-05-28
  • 打赏
  • 举报
回复
再顶一下!
mostone 2007-05-27
  • 打赏
  • 举报
回复
自顶一下。
mostone 2007-05-26
  • 打赏
  • 举报
回复
谢谢大家!
to xingdongfang: 能否给个简单的DEMO?
to codeangel/flyin2006: 能否再稍稍解说一下?
xingdongfang 2007-05-26
  • 打赏
  • 举报
回复
直接使用HtmlTable,再通过Javascript进行操作,提交时,取出每行数据,置入HiddenField。这个方案,似乎太繁杂了点,要求也很高,若没有现成的ajax功能,完全自己写,又要至少兼容FF与IE,工作量大了点吧。


//*********************************
我就是这么做的.
工作量并不太大.用MS的AJAX,效果很好.
flyin2006 2007-05-26
  • 打赏
  • 举报
回复
GridView扩展
codeangel 2007-05-26
  • 打赏
  • 举报
回复
gridview+模板列
Qim 2007-05-26
  • 打赏
  • 举报
回复
用gridview.
mostone 2007-05-26
  • 打赏
  • 举报
回复
可以不写代码的,只要绑定到DatasourceID到实际的数据库即可。
mostone 2007-05-26
  • 打赏
  • 举报
回复
感觉很无奈,或许如你所说在追求编程的完美吧,所以还希望能看到别人的实际解决方案。
amandag 2007-05-26
  • 打赏
  • 举报
回复
而GridView,默认是直接与后台数据库互动操作,每一次增加删除,都会直接操作数据库
=============================================================================
默认是这样么? 不写代码怎么会增加删除?
luyesql 2007-05-26
  • 打赏
  • 举报
回复
sf 帮顶
  • 打赏
  • 举报
回复
其实如果你说临时订单,这是业务逻辑。你说临时表,则肯定会按照数据库表去理解。

好吧,我假设你说的“业务逻辑上的临时表”已经考虑到用户很多、很随机地出现在网络上这个事实,假设你已经知道需要避免“表”这个概念。


程序是设计出来的,不是感觉出来的。感觉不应该太浅。如果你感觉“用户关闭了页面会在DB中留下废数据”,你就应该自己回答是否应该留下废数据、多长时间需要清理、这个清理到底损害了你的实际金钱还是只是技术上的洁癖造成的,然后在知道了完整的解决方案之后跟其它的完整解决方案去对比。不能在几个只有很浅的连操作流程尚不完整的设计中对比。

我其实也感觉到一些其它方案,但是我几乎没有去对比,因为别的方案都不完整,还没有资格跟可以确保你可靠、简洁地实现功能的方案对比。

搞技术,个人别追求编程的完美,应该追求用户的使用效果。
加载更多回复(22)

62,047

社区成员

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

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

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

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