惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
Recent Announcements
Recent Announcements
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
A
About on SuperTechFans
Vercel News
Vercel News
博客园 - 【当耐特】
爱范儿
爱范儿
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
D
Docker
博客园 - 叶小钗
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Help Net Security
I
InfoQ
博客园 - 三生石上(FineUI控件)
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - zjy

ligerui.grid.extend.rowSpan 用户中心 - 博客园 用户中心 - 博客园 OnClientClick 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程 防SQL注入 用户中心 - 博客园 [CS0030错误]奇怪:难不成ChangePassword也是系统用名? DataTable中统计列中不同行问题 推荐个C#不错的开发工具(新版本SharpDevelop) 安装IE7 Visual Studio出现调试不够权限的解决办法 求助:UltraWebGrid当用xml paging(ajax)时,如何取其子表的band的index或者子表行信息?(NetAdvantage) 解决UltraWebGrid分页时出现的脚本错误(Infragistics的Bug) 修改上传文件控件样式并实现上传文件功能 用页传值方式解决模态窗口的Response.WriteFile文件下载 DataTable添加列时容易被忽略的问题! 重构oninit,应用在模式窗口的方法 获取一个星期时间段的具体日期 Web导出Word需要添加头文件 - zjy - 博客园
解决infragistics的webgrid嵌套子表列名在ajax下(xml paging)...
zjy · 2006-11-16 · via 博客园 - zjy

webgrid的嵌套子表的功能很强,但我用了xml paging功能时,发现问题:
当子表的列名(Header.Caption)为中文时,展开子表就会出现乱码.而不用xml paging展开子表就没有问题.我郁闷了一上午,最后终于找到了解决的办法(详细过程省略了,反正很痛苦)
原因:当用xml paging方式时,webgrid展开子表的过程,其实就是一次无刷新的操作,而原本设置的列名被post后,出现了乱码,我找到了它的ig_WebGrid_dom脚本:

this.XmlHttp.open("POST"this.Url, false);
this.XmlHttp.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
this.XmlHttp.onreadystatechange=new Function("igtbl_onReadyStateChange('"+this.Id+"')");
this.XmlHttp.send("__EVENTTARGET="+this.UniqueID+"&__EVENTARGUMENT=XmlHttpRequest&"+this.UniqueID+"="+igtbl_escape(this.QueryString));

只看出是igtbl_escape()方式,应该和javascript的escape作用差不多,所以直接修改它的脚本好像并不能解决.
   后来我想,既然是用xmlhttprequest来完成子表的展开,那用客户端的AfterXmlHttpResponseProcessed事件应该可以重新给子表的列赋值了(infragistics自己的控件ClientSideEvents).
添加的客户端事件代码:

function UltraWebGrid1_AfterXmlHttpResponseProcessed(gridName){
            var col0 
=igtbl_getElementById("UltraWebGrid1c_1_0");
            
if(col0!=null)
            col0.innerText 
= "接受者";
            var col1 
= igtbl_getElementById("UltraWebGrid1c_1_1");
            
if(col1!=null)
            col1.innerText 
= "状态";
            var col3 
= igtbl_getElementById("UltraWebGrid1c_1_3");
            
if(col3!=null)
            col3.innerText 
= "回复时间";
            var col4 
= igtbl_getElementById("UltraWebGrid1c_1_4");
            
if(col4!=null)
            col4.innerText 
= "回复内容";
        }

UltraWebGrid1c_1_0的意思是取子表的第1列的列名,方式如下:
列的命名方式: "表格名"+"C_" +"Band的序号" + "_" +"列序号"
如UltraWebGrid1c_1_0 的表格名=UltraWebGrid1,Band的序号=1,列序号=0
这样当展开时,列名就会重新写上去,这样就不会出现乱码了.
注:我用的是2005V3版本,不知道刚刚发布的06V3的版本会不会考虑到这个情况.