求解一道面试题:实现一个无刷更新数据的DataGrid控件

kwklover 2005-08-30 10:06:31
问题:
下面是面试题目的全部说明:
目标:做一个仿DataGrid的列表控件
要求:控件要可以输入DataSource(DataSet类型), Columns(设置输出列表的列);
控件输出:
1、一个Table,利用XML数据岛方法,绑定到DataSet
2、同样利用DataIsland方法进行分页:首页,上一页,下一页,末页。并显示记录总数
3、实现无刷新更新(包括新增、编辑、删除功能)数据,按一个ASP.NET BUTTON来提交所修改
的内容到DataSet

疑惑:
1,开发的时候直接继承WebControl还是DataGrid做呢 ?
2,如果继承WebControl从头来,要实现的东西非常多,比如设置Columns等,还要分页等
3,如果选择继承DataGrid,那么让它从数据岛里绑定数据 ?DataGrid里设置的列数据绑定格式和在
HTML里的数据岛的数据绑定格式不一样 ?
4,呈现数据列表可以在客户端使用JS创建一个一个的td来做,但这样做,当用户编辑数据的时候,如果知道用户那些列是需要编辑的,更新又如何定位 ?

接惑:
非常欢迎大家进来讨论,虽然很难非常优雅地实现(ASP.NET 2.0的无刷新实现也不优雅),但希望通过讨论能找到一个好的实现方法

谢谢
...全文
576 25 打赏 收藏 举报
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yyw84 2005-08-31
就直接在下边这个地址下载行了,
http://www.cnblogs.com/Files/helloworld84/AjaxResearch.zip
  • 打赏
  • 举报
回复
xuwencan 2005-08-31
也发一份给我学习一下可以吗?
xuwencan@263.net

先谢过你了。
  • 打赏
  • 举报
回复
pontus 2005-08-31
速马那个例子说无刷新,我怎么看还是刷新了
  • 打赏
  • 举报
回复
lovelxj 2005-08-31
以前有见过都是JS来实现的
  • 打赏
  • 举报
回复
kaixin110 2005-08-31
关于您提到的DataGird无刷新问题,根据我的理解,您是想实现在绑定DataGrid控件时,不想客户端页面进行刷新这样一个功能,如果我的理解有误,请指出。
根据我的经验,对于这样一个功能我们可以由以下三种方法来实现:
首先,最简单的方法就是将页面的smartNavigation属性设置为true,这样我们这个数据的提交都是在一个iframe的框架页面里面完成,当数据从服务器端返回到客户端时,只有客户端的页面上一些元素进行更新,这样就不会原来直接postback数据那样直接刷新页面,使得客户体验度增加。
其次,我们可以自己实现一些对于客户端Script callback功能的封装,即使用xmlhttp来从客户端发出请求,然后将数据读取到dataset中,最后将dataset中的数据绑定到datagrid控件上即可。关于如何在asp.net 1.1中实现script callback的功能,我们可以参考以下的一篇文档,其中有详细的示例代码。另外,在asp.net 2.0 beta中,已经实现了对于script callback的封装,再以后新的vs.net 2005种,我们可以很方便的来使用script callback这个功能了。
最后,据我所知,有一种第三方的标准叫AJAX的框架,对script callback进行了另外一种模式的封装,而这种封装也可以实现客户端无刷新读取或提交数据,如果您对此方面有兴趣,我建议我们可以参考以下的一个站点:
http://ajax.schwarz-interactive.de/csharpsample/default.aspx
另外,由于AJAX本身是一个第三方的框架,所以微软对此并不做出任何承诺及技术支持。


my 发表于2005-08-20 2:23 PM
关于Script callback功能的实现,我前文回复中已经提起,目前VS.NET 2003并没有封装任何相关的功能,只有VS.NET 2005才对此进行了封装,所以在VS.NET 2003中我们需要手动添加相应的代码,以下两篇来自MSDN的文档都有详细的示例代码:
http://www.microsoft.com/indonesia/msdn/lifewithoutrefresh.aspx
http://msdn.microsoft.com/msdnmag/issues/04/12/CuttingEdge/
  • 打赏
  • 举报
回复
kaixin110 2005-08-31
http://www.sunmast.com/Research/Ajax/AjaxWay.aspx

这是速马的,
看看吧
  • 打赏
  • 举报
回复
飞不动 2005-08-31
这个我以前做过,要花一定的时间。
这个做为面试题?不太可能吧?
  • 打赏
  • 举报
回复
lovebanyi 2005-08-31
问题分解 一个Table,利用XML数据岛方法,绑定到DataSet 第一步没有什么好说的了
无刷新.因为要开发成控件.哪么模仿一下阿姐ajax里的无刷新datagrid 删除和分页就一却OK

还有一种方法.因为xml的话.数据绑定可以不用到dataset直接在客户端绑定 xmlhttp xmldom搞定
分页也可以全部在这边写(分页比较难)
  • 打赏
  • 举报
回复
blackhero 2005-08-31
什么公司面试题这么难呀

一个月能开多少钱呀

  • 打赏
  • 举报
回复
kwklover 2005-08-31
◎pontus(pontus)
你看过他的实现方式了吗 ?虽然有刷新,不过这里刷新的概念是不同的

--个人理解
  • 打赏
  • 举报
回复
kwklover 2005-08-31
@cjume(cjume)

能推荐几个第三方的无刷新datagrid吗 ?
也许真的没法实现,那就只好反编译第三方的代码拉 ^_^

@helloworld84(梦的存在,是为了追求!)
你推荐的速马的这个ajax代码,已经阅过了,对开阔思路还有用哦,先谢谢了,但,虽然实现了非postback的方式提交数据和通过xmlhttp的方式提取数据,但由于它本身的实现,从用户体验的角度看,它的DataGrid操作数据还是属于“刷新”的,因为把整个HMTL重新在IE上重绘了一遍,
上面是我的理解,不知道有没有理解错 ?

  • 打赏
  • 举报
回复
Study_Now 2005-08-31
看看
  • 打赏
  • 举报
回复
criedshy 2005-08-31
@ helloworld84(梦的存在,是为了追求!)
烦恼给我发一份源码

qq-10-2001@163.com

谢谢
  • 打赏
  • 举报
回复
cjume 2005-08-31
用XMLHTTP来实现吧,现在很多第三方的datagrid都是无刷新的了
  • 打赏
  • 举报
回复
777kit 2005-08-31
Mark
  • 打赏
  • 举报
回复
自然框架 2005-08-31
我觉得是不可能实现的。
  • 打赏
  • 举报
回复
kwklover 2005-08-30
@ helloworld84(梦的存在,是为了追求!)
烦恼给我发一份源码

hisuifeng@etang.com

谢谢
  • 打赏
  • 举报
回复
zeusvenus 2005-08-30
用AJAX应该可以。
  • 打赏
  • 举报
回复
helloworld84 2005-08-30
源码已发出,请查收
  • 打赏
  • 举报
回复
o33o33 2005-08-30
我也要源代码
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
.NET社区
加入

6.0w+

社区成员

.NET技术交流专区
帖子事件
创建了帖子
2005-08-30 10:06
社区公告

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

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