| 关于Ajax操作后数据绑定的问题,各位来看下 |
| [ 来源:ITWENKU 时间:2006-9-27 17:40:54 | 浏览:217人次
] |
| |
|
近日遇见一个问题,不知各位是否也遇到过 用一个DataTable作为DataList或Dropdownlist的数据源,在运行时用ajax调用后台处理的方法对DataTable进行增或删的操作,然后再绑定给DataList,问题就出在绑定上,我catch到“未将对象引用到实例”,还请各位帮忙
up
代码呢
你使用的那个Ajax大概就是对导致你放弃asp.net,放弃控件状态控制,变成jsp。
我只是想来讨论下这个问题,看有没有解决的办法 请帮忙指导一下,谢谢
一般来说,与普通的网页一样,在Ajax后台服务初始化阶段需要重建页面上的控件——DataList,然后你才能访问它。例如在普通页面回发的代码中大多数人在page_load中或者createChildControls中重建(绑定)DataList。
你创建DataList的代码在Ajax后台服务被执行了吗?如果执行了,又是怎样获得DataList中客户端修改的值得呢(例如其中有一个文本框被修改应该在Ajax后台服务获得此Text新值以及TextChaned事件)?如果没有,那么你的Ajax非常简单,简单到你要放弃asp.net了回到比asp还古老的时代去,那个时代只有javascript,后台仅仅使用http的Get请求的参数来获取信息。而asp.net是通过面向对象方式直接访问控件的属性、控件的事件的。
好像不能在后台异步绑定控件吧
应该返回一个数据包 然后用数据包里的数据在前台用javascript控制DataList或Dropdownlist
按照你选择的Ajax,你根本不应该在按照asp.net的思维去操纵控件,你的那种Ajax跟控件无缘。
sp1234 能说一下该如何在page_load重建来实现吗?谢谢
没这样应用过,顶一下
你使用的Ajax是个什么机制?你的页面的page_load它会给你执行吗?如果执行,它会给你再post进去DataList里所有的客户端提交的值吗?
这有一点像 atlas 的 updatepanel。不过UpdatePanel非常蠢笨,它既不能对“TreeView中某一个Node”这样的细节设置Ajax区域,也不能让Ajax的结果同时更新页面上多个小的控件而是只能是UpdatePanel整个区域。我觉得这个UpdatePanel以及更早更经典的MagicAjax能够让你绑定DataList(不过我并没有用过它们)。但是它们好像只能读状态,都不能将你对页面上控件的状态更新写回页面。
不知道你使用的Ajax是什么?
大部分通用的Ajax,由于都不是在asp.net这样面向丰富的服务器控件土壤上开发出来的,就像ralpha08(被水淹死的鱼) 所说的,都是让你自己将数据库编码成字符流返回给javascript,然后javascript再解码,再使用客户端dhtml对象创建界面。所有控件都用javascript重新写,服务器仅仅是个WebService一样以非常简单的字符串作为I/O参数。
我在客户端用一个select下拉菜单让用户自主选择每页显示的记录条数,这些记录用datalist绑定,比如用户选择10,然后我用Ajax调用CS代码,重绑定给datalist,想在页面中实现无刷新,但这样却实现不了重新绑定
你的思路不正确,.aspx页面在你执行完毕后,里面的一些控件基本上就“不存在了”,如果你这时侯再通过 Ajax 来调用.aspx页面里面的控件当然要报错:"未将对象引用设置到对象的实例". 如果你想通过 Ajax 向 DataTable 里面添加数据,再将 DataTable 绑定到 DataList 倒不如直接通过 JavaScript 脚本向 DataList 里面添加数据,DataList 映射到 HTML 里面是 DropDownList控件,你可以直接通过 JavaScript 控制。
DataList 映射到 HTML 里面是 DropDownList控件? 好像不是呀,我不知道怎么控制,请songsu讲得详细点吧,多谢了
atlas 才是跟微软一伙的撒,顶
回头认真看了下你的题目,才发现你是想对绑定的数据进行修改啊,我觉得那个思路不对,想松鼠说的那样,你要想想那个web的运行原理。你可以简单的把数据源进行修改为新的数据源直接搬上去啊
|
|
 |
推荐文章 |
|