TreeView 爱恨之间

    自从用了Asp.net2.0,就有了TreeView这个利器,那家伙相当不错,用着方便,毕竟是framework自带的,不过有几个相当不便的地方:
其一,没有客户端的对象访问方法!
其二,所谓支持CallBack只是数据绑定的时候的子项展开以及理所应当的Collapse,Expand.
其三,没有客户端的事件!想通过传统的添加属性的方法{node.Attributes.Add("onclick","xxxfunction()")}给TreeNode增加客户端脚本支持竟然都没有办法! 看了Page的运行时HTML代码,treenode生成的是html链接控件<a>,竟然这个方便都不提供!只能要么Postback on SelectedItemChanged,要么设置跳转URL!
还好,咱可以在Url中这样写NavigateUrl="JavaScript:xxxfunction();" 可是这样写了之后,竟然不能访问event.srcElement,无奈只能将Text,Value都传过来,可是问题又来了,汉字部分都被UrlEncode了,成了带%的一串16进制数据!我这个暴脾气的! 苦苦找来不得其法,只好自己写个函数模拟JavaScript的escape功能,现将文字编了码再附给NavigateUrl,然后在javascript函数中调用unescape函数再反过来,那是相当麻烦,不过总算能用了. 兹撰文以记之.
      附上我的escape小函数,万一谁用的到,不用费劲了. 那位别笑了,您就当做没看见.

private string escape(string s)
        {
            StringBuilder sb 
= new StringBuilder();
            
byte[] ba = System.Text.Encoding.Unicode.GetBytes(s);
            
for (int i = 0; i < ba.Length; i += 2)
            {   

                sb.Append("%u");
                sb.Append(ba[i 
+ 1].ToString("X2"));
                sb.Append(ba[i].ToString(
"X2"));
            }
            
return sb.ToString();
            
        }
posted @ 2006-04-01 01:07 大剑师 阅读(991) 评论(8)  编辑 收藏 网摘 所属分类: ASP.NET

  回复  引用    
#1楼2006-04-07 04:39 | 呵呵呵呵呵呵呵[未注册用户]
哥们,我怎么记得.NET 2.0自带字符编解码的方法...
  回复  引用  查看    
#2楼[楼主]2006-04-08 00:46 | 大剑师      
@呵呵呵呵呵呵呵
是啊,不过不能在客户端使用啊,如果有能在客户端使用的请你告诉我.先谢了

  回复  引用    
#3楼2006-08-04 21:21 | ddouble[未注册用户]
javascript里有全局方法可干此事,decodeURI 和 encodeURI

  回复  引用  查看    
#4楼[楼主]2006-08-07 18:09 | 大剑师      
@ddouble
谢谢你的回复,不过我说的是服务器端程序

  回复  引用    
#5楼2006-08-10 07:39 | ddouble[未注册用户]
两个静态方法
HttpUtility.UrlEncode
HttpUtility.UrlDecode

  回复  引用    
#6楼2006-12-21 13:29 | 谢客[未注册用户]
谢谢LZ

的确要自己写代码

UrlEncode和UrlDecode不能解码JS编码的

  回复  引用    
#7楼2007-02-28 11:53 | 过客[未注册用户]
谢了。用到了,挺好使的
  回复  引用    
#8楼2007-04-17 08:35 | simple[未注册用户]
我用 NavigateUrl="JavaScriptxxxfunction();" 为什么不响应javascript,却只弹出空白页,地址是JavaScriptxxxfunction();"



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 364021




相关文章:

相关链接: