谢小漫

挖掘数据的地瓜 联系:catcn@qq.com

2010年1月30日 #

弹出选择窗体控件(附源码)

弹出选择窗体控件(附源码)

久未在博客园发文章,今天有空,借着郁闷酒气,发个最近做的控件吧(未完结版本)。
先上图,来点真相:

这个应该是许多WebForm程序都需要的功能吧,最近写的小程序里边写了个,就抽出来了,弄了个自己的命名空间,具体的代码方面参考了一下郑健的《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》一书中的某个控件。他那个是.net 3.5的,用了ScriptManager,具体没有详细的了解。这个是.net 2.0的,使用的一些东西也不一样。

顺带说一下,《庖丁解牛》是一本十分推荐的好书,是居家旅游,杀人Mie口的常备好书。

 

具体遇到两个问题:
1. 向控件所在的WebForm注册JS脚本代码,要在override的OnPreRender处注册。WebForm页面要包

含<form id="form1" runat="server">标记。

 

2. 在弹出框里边,服务器控件回传后,dialogArguments在IE可以使用,在Firofox和Chrome浏览

器已经不存在了,只能走window.opener来回传值了。

 

第二点很重要,要浏览器兼容,必须考虑。虽然,直接用dialogArguments可以为返回的控件加js

事件来返回一个值,但是,如果是触发服务器控件的服务器事件,就不能使用dialogArguments了

,服务器回传后,就不能使用dialogArguments,只能用window.opener了,这个东西弄了我一个半

个下午。

尚未实现:回传值绑定到多个控件上。

 

已经测试浏览器:
IE 6.03XXXXX
Firefox 3.0.4
Chrome 3.0.195.38

其他浏览器尚未测试,代码项目附在文章后边,VS2008下.net2.0的项目。

代码下载【弹出选择窗体控件(附源码)

posted @ 2010-01-30 00:13 谢小漫 阅读(12) | 评论 (0)编辑

2009年9月23日 #

获取枚举描述信息(Description)2

之前记录过一种获取枚举描述信息的方法:http://cat.xiexiao.com/enum_description/

今天,发现扩展一下Enum的方法更好,不过就是只能C#3.0才可以使用扩展方法。

1。定义enum
using System;
using System.ComponentModel;

  public enum TimeOfDay
        {
            [Description("上午")]
            Moning = 0,
            [Description("中午")]
            Afternoon = 1,
            [Description("晚上")]
            Evening = 2,
        };

2.定义扩展:

        /// <summary>
        /// 获取描述信息
        /// </summary>
        /// <param name="en"></param>
        /// <returns></returns>
        public static string description(this Enum en)
        {
            Type type = en.GetType(); MemberInfo[] memInfo = type.GetMember(en.ToString());
            if (memInfo != null && memInfo.Length > 0) {
                object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
                if (attrs != null && attrs.Length > 0)
                    return ((DescriptionAttribute)attrs[0]).Description;
            }
            return en.ToString();
        }

这样子就可以直接用方法:.description()来获取描述信息了。没有描述信息,返回en.ToString()。

这里可以搞到wave邀请

posted @ 2009-09-23 17:01 谢小漫 阅读(62) | 评论 (1)编辑

2009年6月11日 #

mshtml组件引用的问题

在一个系统里边应用了一个htmleditor,winform的程序,需要引用Microsoft.mshtml.dll。
所以就引用了.net下的这个文件。添加引用>>.net>>选择Microsoft.mshtml。

开发过程一切完好,没有遇到任何问题。但是部署到另外的一台机器的时候,就出现了,找不到引用的Microsoft.mshtml.dll的问题。看程序目录下也是没有mshtml.dll类似的文件。

看来是这个Microsoft.mshtml.dll出问题了,到网上搜索了一下:
得到以下文章:Microsoft.mshtml到底是什么? (http://www.cnblogs.com/waxdoll/archive/2005/04/08/134196.html

仔细阅读:原来在COM组件引用里边还有一个mshtml的引用东西。一共有两个mshtml。(以下原文引用):
.NET系统附带了一个mshtml.dll的Interop封装,理论上来说自然无法脱离COM独立存在,但是既然是Interop包装过的,那么在.NET环境中的使用肯定就要比直接调用COM组件有优势。

开始还想着到C盘里边把Microsoft.mshtml.dll拷贝到程序目录了事算了,搜素了一下,发现问题严重了,这是个2.98 MB的大家伙。可是不引用这个可以吗?
好在搜索这个的时候出现了另外两个好东西:WindowsLive.Writer.Interop.Mshtml.dll(165k)和WindowsLive.Writer.Mshtml.dll(113k)。

所以在程序里边删除了Microsoft.mshtml.dll的引用,换上了113k的dll的引用,发现不行。在换上WindowsLive.Writer.Interop.Mshtml.dll(165k),终于可以成功了。嗯,这个小块头的mshtml.dll可以替换掉3M的的那个Microsoft.mshtml.dll,不错,不错。

然后,打开对象浏览器,把两个dll文件对比了一下,不出所料:小的dll是也是针对mshtml COM的封装。WindowsLive.Writer.Interop.Mshtml.dll这个是在Live Writer的里边的,LiveWriter里边也有一个htmleditor,原来上应该和我现在用的htmleditor差不多。

在自己blog上发过,又转这边来了。

posted @ 2009-06-11 12:32 谢小漫 阅读(350) | 评论 (0)编辑

2009年4月30日 #

导出所有用户表到excel

导出所有用户表到excel,结合上一个发的存储过程。

/*-- 
导出所有用户表到excel
--
*/
CREATE proc 导出所有用户表
as 


DECLARE @tb_name varchar(300)

DECLARE tbname_cursor CURSOR FOR
select o.name from dbo.sysobjects o 
where OBJECTPROPERTY(o.id, N'IsUserTable'= 1 
and o.name<>'dtproperties'
order by o.name

OPEN tbname_cursor

-- Perform the first fetch and store the values in variables.
--
 Note: The variables are in the same order as the columns
--
 in the SELECT statement. 

FETCH NEXT FROM tbname_cursor
INTO @tb_name


-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN

   
--导出所有用户表
   exec('p_exporttb @sqlstr=''select * from '+@tb_name+' '',@path=''c:\abc'',@fname='''+@tb_name+'.xls'',@sheetname='''+@tb_name+'''')

   
FETCH NEXT FROM tbname_cursor
   
INTO @tb_name


END

CLOSE tbname_cursor
DEALLOCATE tbname_cursor

posted @ 2009-04-30 09:51 谢小漫 阅读(36) | 评论 (0)编辑

2009年4月9日 #

Sql Server数据导出EXCEL

     摘要: 还是在用Sql Server2000的,放出一个修改过的Sql Server数据导出EXCEL存储过程,提供了分sheet功能,之前的版本是没有这个功能的,解决超过65535行的问题。[代码]  阅读全文

posted @ 2009-04-09 09:48 谢小漫 阅读(554) | 评论 (8)编辑

2009年2月4日 #

C#的串口编程 DataReceived

     摘要: 上次的C#的串口编程没有写这个,这次补充上去,就比较完整了。开始自己写写也不太会用事件来读取串口传来的信息:就想着用另外的线程来读取,用事件轻松挺多了。直接点的代码serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);//对你的serialPo...  阅读全文

posted @ 2009-02-04 13:37 谢小漫 阅读(1128) | 评论 (3)编辑

2009年1月15日 #

XML-RPC.NET的X509Certificates如何使用呢

     摘要: XML-RPC.NET的X509Certificates如何使用呢?继续上一篇的问题。用起来挺简单的,但是有点麻烦的问题,也要到网上找找答案才行。先来看实验条件(这个X509Certificates好像应该是给SSL链接的时候使用的,我就这中使用方法):1。先看看服务器端:xampplite下的php,已经开启了SSL链接(好像是装了就有了),默认已经加载php_xmlrpc.dll模块,用这个模...  阅读全文

posted @ 2009-01-15 12:13 谢小漫 阅读(195) | 评论 (0)编辑

2009年1月14日 #

XML-RPC.NET

     摘要: XML-RPC.NET,最近在用的一个DLL,用起来不错,几个代码就可以对远程的XML-RPC数据进行交换了。对XML-RPC不太懂的可以看看本网站的Xml-rpc类别。我用这个是用来与远程的PHP网站来进行数据交换。相比WebServices这个大块头来说,xml-rpc就是小菜一碟了。不过这小菜下下酒还是不错的。OverviewXML-RPC.NET is a library for impl...  阅读全文

posted @ 2009-01-14 22:27 谢小漫 阅读(208) | 评论 (0)编辑

2008年12月27日 #

在读《C#和.NET 2.0实战》

     摘要: 这本应该是比较容易漏眼的书。不是红部头,不是MsPress,也不是O'Reilly的(原版是)。书店里边摸上手,看了看,内容不错。douban一下,才知道是作者的原版是法文版本。英文版到了一个小公司。然后中文版是图灵引进。图灵的书质量不错。该介绍的都介绍到了,就像是副标题:平台,语言与框架。实在是放在手边的工具书,上博客园的时候手边放一本,碰到有什么不懂,懂一点的,就翻翻。joyo对这本书的配送不...  阅读全文

posted @ 2008-12-27 22:25 谢小漫 阅读(76) | 评论 (2)编辑

2008年12月12日 #

如何在ASP.NET中做异步

     摘要: 先来两个都是延时两秒的方法,需要using System.Threading;using System.Collections.Generic;[代码]第一个为页面顺序执行的按钮:[代码]打开trace后可以看到,页面的执行时间大于4秒,两个方法与页面在同一个线程里执行。第二个为参考上一篇文章如何在winform中用委托做异步的,也把委托做异步用在ASP.NET上:先定义委托:[代码]添加委托异步...  阅读全文

posted @ 2008-12-12 19:08 谢小漫 阅读(269) | 评论 (0)编辑

导航

统计信息

最新闪存

搜索

 

常用链接

我参与的团队

我的标签

随笔分类

随笔档案

文章档案

最新评论

. .