随笔- 15  文章- 1  评论- 8 
2008年7月24日
在FireFox中并不支持
document.getElementById("div1").innerText 这句脚本,怎么让它也支持这句脚本呢?
从网络拆抄了两种方法:
if(document.all){
   document.getElementById(
'element').innerText = "my text";
}
 else{
  document.getElementById(
'element').textContent = "my text";



这种方法比较简单明了。但有一点区别是textContent会包含不应有的HTML代码。
另一种方法是:
try{
        HTMLElement.prototype.__defineGetter__
        (
        
"innerText",
        function ()
        
{
            var anyString 
= "";
            var childS 
= this.childNodes;
            
for(var i=0; i<childS.length; i++)
            
{
                
if(childS[i].nodeType==1)
                    anyString 
+= childS[i].tagName=="BR" ? '"n' : childS[i].innerText;
                
else if(childS[i].nodeType==3)
                    anyString 
+= childS[i].nodeValue;
            }

            
return anyString;
        }

    ); 
}

catch(e){}


这种方法我没有试过,你们不防可以试看看。问题总是的解决办法的,只要你有心。
posted @ 2008-07-24 10:32 flank.chen 阅读(137) 评论(0) 编辑
2008年1月16日
转:http://www.cnblogs.com/13590/archive/2007/08/06/844532.html
18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》主要内容如下:
一、范围
     该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。
二、编码对象
     公民身份号码的编码对象是具有中华人民共和国国籍的公民。
三、号码的结构和表示形式
1、号码的结构
    公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
2、地址码
    表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。
3、出生日期码
    表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
4、顺序码
     表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
5、校验码
(1)十七位数字本体码加权求和公式
S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和
Ai:表示第i位置上的身份证号码数字值
Wi:表示第i位置上的加权因子
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

(2)计算模
Y = mod(S, 11)

(3)通过模得到对应的校验码
Y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2
四、举例如下:
北京市朝阳区: 11010519491231002X
广东省汕头市: 440524188001010014



以下是程序代码:

Code
posted @ 2008-01-16 10:08 flank.chen 阅读(97) 评论(0) 编辑
2008年1月8日
使用以上方法必须对dcom进行配置,给用户使用office的权限。
具体配置方法如下:
1:在服务器上安装office的Excel软件.
2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"
3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"
4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框
5:点击"标识"标签,选择"交互式用户"
6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.
7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限. 这样,我们便配置好了相应的Excel的DCOM权限.
若不进行配置会出现错误
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。
原因是用户没有使用Excel的权限。
导出到word同样要配置使用word的权限
posted @ 2008-01-08 11:46 flank.chen 阅读(260) 评论(0) 编辑
   今天开始自己写文章,有描述不当的地方请多指教。
   这里主要讲述两种方法,包括处理导出的乱码和格式化问题。
   (1)在客户端把GridView的数据导出到Excel格式文件。
   (2)使用COM组件把数据导出到Excel格式文件。
    这两种方法主要的区别(或者说是使用COM导出数据比较不理想的地方)是使用COM组件必须添加该组件的DLL的引用,由于组件有版本的不同,所以随之而来的将是因版本的不同而不能使用该功能。另一点区别就是使用COM组件前提是客户端必须有安装Excel。
    当然,你可以根据运用环境的不同使用不同的方法。以下贴出两种方法的代码,希望对大家有用。
    (1)fileName = HttpUtility.UrlEncode(“文件名”, “文件编码”);//如果文件名为中文格式,则可用这行代码对文件名进行编码。然后得用底下带(¥¥¥)行对其进行反编码,这样输出的文件名就不会是乱码。当然使用的编码要正确。
            
Code
  这就是在客户端导出数据的完整方法。
    (2)假设这里的数据源为Table1
        
Application excelApp = new ApplicationClass();            
         Workbook excelBook 
= excelApp.Workbooks.Add(Type.Missing);
        Worksheet excelSheet 
= (Worksheet)excelBook.Sheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
           excelSheet.Name 
= strTitle;
            excelApp.Visible 
= true
            
int rowCount = Table1.Rows.Count;
            
int colCount = Table1.Columns.Count;

           
object[,] dataArray = new object[rowCount + 1, colCount];//二维数组定义是多一个标题行。
            for (int j = 0; j < colCount; j++)
           
{
                dataArray[
0, j] = Table1.Columns[j].Caption;//导出字段标题。
                
//根据各列的数据类型设置Excel的格式。
                switch (Table1.Columns[j].DataType.ToString())//格式化单元格的输出格式
               
{
       
case "System.String":
                        excelSheet.get_Range(excelSheet.Cells[
11 + j], excelSheet.Cells[rowCount + 11 + j]).NumberFormatLocal = "@";
                        
break;
                   
case "System.Decimal":
                       excelSheet.get_Range(excelSheet.Cells[
11 + j], excelSheet.Cells[rowCount + 11 + j]).NumberFormatLocal = "$0.00";
                        
break;
                    
case "System.DateTime":
                        excelSheet.get_Range(excelSheet.Cells[
11 + j], excelSheet.Cells[rowCount + 11 + j]).NumberFormatLocal = "yyyy-mm-dd";
                        
break;
                    
//可以根据自己的需要扩展。
                    default:
                       excelSheet.get_Range(excelSheet.Cells[
11 + j], excelSheet.Cells[rowCount + 11 + j]).NumberFormatLocal = "G/通用格式";
                        
break;
                }

                
for (int i = 0; i < rowCount; i++)
                
{
                    dataArray[i 
+ 1, j] = Table1.Rows[i][j];
                }

       }

            excelSheet.get_Range(
"A1", excelSheet.Cells[rowCount + 1, colCount]).Value2 = dataArray;


        注:使用这种方法的时候需要注意两个地方。(1)必须对本地用户设置权限,可能会出现的错误是:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败。对这个错误的解决办法将贴在下一篇。(2)导出的行号设置。很多人可能会遇到的错误是:
     异常类型: COMException
     异常消息: 异常来自 HRESULT:0x800A03EC
这个问题主要是因为导出的行号设置不对所引起的异常。在这个方法中使用到行号的有:
《1》excelSheet.get_Range(excelSheet.Cells[1, 1 + j], excelSheet.Cells[rowCount + 1, 1 + j]).NumberFormatLocal = "@";
《2》excelSheet.get_Range("A1", excelSheet.Cells[rowCount + 1, colCount]).Value2 = dataArray;
需注意的是excelSheet.Cells[1, 1 + j],,如果有标题的情况下,必须把标题行去掉,所以开始行是1,
    这样就算结尾了,第一篇文章,请大家多多指教。谢谢。
posted @ 2008-01-08 11:32 flank.chen 阅读(4076) 评论(4) 编辑
2007年11月7日
Visual Studio 2005 Code Sinppet titled[Method Stub - Body] failed to load.
2007年03月14日 星期三 14:47

如果你在使用VS 2005,如果你不能使用它的Code Snippet功能,如果你在实现抽象类override 方法时弹出:

Code Snippet titled [Method Stub - Body] failed to load. Verify that refactoring snippets are recognized in the Code Snippet Manager and that the snippet files are valid on disk.

这段提示信息告诉我们指定的Code Snippet块无法找到,很多人可能会由于这个原因去修复安装VS 2005。其实解决办法很简单,只要重新导入Code Snippet块就行了。找到并打开Code Snippet Manager(Ctrl + K,Ctrl + B),然后选择要操作的语言(C#),用Add按钮导入两个默认的文件夹:Refactoring和Visual C#,这两个文件夹一般会在VS2005安装目录下的,如:C:\Program Files\Microsoft Visual Studio 8\VC#\Snippets\1033 。

posted @ 2007-11-07 11:34 flank.chen 阅读(115) 评论(0) 编辑
2007年8月29日
转:http://www.cnblogs.com/DotNet1010/archive/2007/08/29/873826.html
项目中用到word转pdf 的功能 ,刚开始的要求是做一个应用程序来转 主要代码如下:
using PDF = PDFMAKERAPILib;
   string wordPath = string.Empty;
        
string pdfPath = string.Empty;

        PDF.PDFMakerApp app 
= new PDFMAKERAPILib.PDFMakerApp();
       
int iReslut= app.CreatePDF(wordPath, pdfPath, PDF.PDFMakerSettings.kConvertAllPages, truefalsetrue, System.Type.Missing);
       
if (iReslut == 0)
       
{
           
this.lblInfo.Text = "转换成功!";
       }

       
else
       
{
           
//转换失败!
           this.lblInfo.Text = Enum.GetName(typeof(PDF.PDFMakerRetVals), iReslut);
       }

后来要求改变 必须用ASP.NET 来调用 心想,代码复制到Web窗体里面不就行了吗?
在用WebDev.WebServer.exe 时候 OK,没问题,当用IIS时,就是转换不成功,花了点时间,发现原因是两个的用户不同,一个是管理员,一个是Asp.net 帐户或者是network Service 看IIS是5.0 还是6.0。想通过更改设置权限来解决,改了不少,效果是从一个错误,变成了另一个错误!
后来从网上查资料,受了点启发:(我做COM测试的时候喜欢用VB.NET  代码简练。)

Imports Word = Microsoft.Office.Interop.Word
Imports PDF = ACRODISTXLib
  Dim Range As New Object()
        Range 
= Word.WdPrintOutRange.wdPrintAllDocument
        
Dim Item As New Object()
        Item 
= Word.WdPrintOutItem.wdPrintDocumentContent
        
Dim PageType As New Object()
        PageType 
= Word.WdPrintOutPages.wdPrintAllPages
        
Dim ManualDuplexPrint As New Object()
        ManualDuplexPrint 
= False
        
Dim OutPutFileName As String = "C:\Topdf\123456.ps"

        
Dim wordApp As New Word.Application()
        wordApp.Documents.Open(
"C:\Topdf\123456.doc"FalseFalseFalse""""False"""", Word.WdOpenFormat.wdOpenFormatAuto, , , , , , "")
        wordApp.Documents.Save()

        wordApp.ActivePrinter 
= "Adobe PDF"
      
        wordApp.PrintOut(
False, , Range, OutPutFileName, , , Item, 1"", PageType, FalseTrue"", , False0000)

        wordApp.Quit()

      

        
Dim pdftest = New PDF.PdfDistiller()
        pdftest.bShowWindow 
= 0

        pdftest.FileToPDF(OutPutFileName, 
"C:\Topdf\123456.pdf""")
        pdftest 
= Nothing
        
''连续调用会出错,可以先杀掉进程 

思路是先用Word 将doc 转换为ps,然后用pdfDistiller 将ps转换为pdf,经过测试,可以在IIS下成功执行。
在此将代码写出来,希望碰到此类问题的,能够少走些弯路!
当然,最好是不调COM,方法是找到了,就是要花钱,先这样用着吧!

posted @ 2007-08-29 08:43 flank.chen 阅读(649) 评论(1) 编辑
2007年7月28日
摘要: 转载:http://www.cnblogs.com/bit-sand/archive/2007/07/27/834148.html今天突然有兴做了两下有关字符串为空的性能测试,与大家分享!结果如下:两种赋值方式的比较:string str="";string str=string.Empty;理论上讲:string.Empty是一个Static的属性,使用时不分配存储空间,而在用""时,系统会分配...阅读全文
posted @ 2007-07-28 11:03 flank.chen 阅读(110) 评论(1) 编辑
摘要: 转载:http://www.cnblogs.com/rijing2004/archive/2007/07/25/830654.html有些朋友看到这个标题可能会有疑问,难道在视图中使用*符号还有何要注意的地方吗?对于这个问题,我们先不必回答,先看一下例子吧。 我这里,使用的数据库是SqlServer2000自带的Northwind,这样方便大家自己私下里测试。首先,创建两个视图,视图的脚本如下:...阅读全文
posted @ 2007-07-28 10:26 flank.chen 阅读(81) 评论(1) 编辑
2007年7月10日
摘要: 转载:http://www.cnblogs.com/JeffreyZhao/archive/2007/01/18/Break_the_Browsers_Restrictions_1.html我们已经知道,脚本文件的并行下载能够提高页面的加载速度。但是目前还有一个急需解决的问题,那就是对于FireFox浏览器的优化。在我们之前使用的优化方法,无论是简单实用的document.write还是食之无味的...阅读全文
posted @ 2007-07-10 20:02 flank.chen 阅读(295) 评论(0) 编辑
2007年7月7日
摘要: 转载:http://www.cnblogs.com/JeffreyZhao/archive/2007/01/18/Break_the_Browsers_Restrictions_1.html最近在为某个人门户站点作优化。  从传统意义上来说,这个站点的各方面都属中规中矩。不过作为一个以客户端为中心的Web应用,其性能,尤其是它的感知性能(Perceived Performance),经常会严重受制...阅读全文
posted @ 2007-07-07 11:59 flank.chen 阅读(93) 评论(0) 编辑