2007-06-03

 

真遗憾,AutoCompleteExtender竟然不支持多列

自动填充,就我来说,最常用的应该是代码输入,这时,总是要求能显示代码所对应的名称,如此一来,AutoCompleteExtender就不适用了,它竟然不支持多列,令人有种想骂人的冲动!哎,枉费这么多时间来折腾,算了,不要它了.

Labels: ,


2007-06-02

 

添加Ajax自动填充控件(AutoCompleteExtender)所遇到的问题

1、添加AutoCompleteExtender控件
从ajax.asp.net上下载了最新的SampleWebSite,将Bin目录下的Dll中的组件添加到控件面板上。打开既存的网站,在其中一个页面添加了AutoCompleteExtender控件。
2、添加ScriptManager控件
按提示,自动填充控件需要信赖ScriptManager,但是当前页面并非Page页,而是自定义组件,如果直接添加在ascx页面上,相信Page页肯定不能再添加ScriptManager了,若其也需要添加此类依赖组件,则会产生冲突,所以我认为应当添加ScriptManagerProxy来替代。
3、添加自定义的后台ServiceMethod
4、运行。
在文本框输入字符后,未能出现下拉列表框,反复检查代码,未能发现任何问题。
5、检查FireFox的Error Console,发现有脚本错误:
'Sys' is undefined.
定位代码:
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$Main$kdkd', document.getElementById('aspnetForm'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], [], 90);
//]]>
</script>
5、安装FireBug后,发现有好几个URL请求发生了404错误,URI是当前网站根目录下的ScriptResource.axd
6、能过以上,确定了是Web.config的配置问题,缺少axd类型的Handler
7、能过查找,发现一个网上资料:http://codebetter.com/blogs/jay.kimble/archive/2006/10/26/How-To_3A00_-Enable-Microsoft-Ajax-Beta-over-on-an-existing-site.aspx
看了看,一来是E文,另外,有好向个step,感觉有点麻烦。于是决定新建一个“ASP.NET AJAX-Enabled WebSite”,将其自动生成的Web.config直接复制过来,并重新添加我自己的appSettings小节与connectionStrings小节。但位置似乎有讲究,紧跟着放在后,产生编译错误:
错误 38 Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element. M:\LingsJob\src.new\Web.config 33
等错误及警告。改变位置,放到</configSections>与<system.web>之间即可。
8、重新编译并运行,在文本框输入时,成功产生XHR,但返回的结果却是错误提示:
Unknown web method XXX.
9、反复检查,未能找出原因,对比AJAX的Sample,索性也改成请求*.asmx再指向AppCode下的WebService类的Public方法。
10、测试成功。

以上是我在使用AutoCompleteExtender所遇的问题及解决措施,方法比较“粗鲁”,而没有去深究细节,个人认为,如非太闲,能实现,就真的是不想去多研究了,感觉做程序,已经是够累了...

Labels: ,


This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]

/**/