颓废程序人生

你今天颓废了吗?

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在网上找的ASPxGrid都是DevExpress.ASPxGrid.Suite.v1.5.01.Full.Source.For.ASP.NET 这种源码扳.DevExpress的ASPxGRID已经更新到V2.0.1版了,装上看看果然和V1版多了很多改动.特别是在数据格式方面,还多了很多其它小控件,在GOOGLE查了一天,结果还是只有V2的Trial版,看着生成页面里红红的末注册信息,还是自己动手看看能不能搞定算了.

首先准备一个文件夹,在PATH里加上Framework和VS SDK的目录路径(我的是C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 和 D:\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin), 在目录里用记事建立两个BAT文件,分别是完成解码和重新生成的两个BAT文件.

解压ildasm.bat

ildasm DevExpress.Web.ASPxDataControls.dll /output:DevExpress.Web.ASPxDataControls.il

生成ilasm.batilasm.exe /dll /resource:DevExpress.Web.ASPxDataControls.res /output:DevExpress.Web.ASPxDataControls.dll /key:StrongKey.snk DevExpress.Web.ASPxDataControls.il


跟着在网上下载Reflector,打开DevExpress.Web.ASPxDataControls.dll (在 C:\Program Files\Common Files\DevExpress\ASP.NET 下)
V2版的所有信息都在这里面.经过查看代码,发现V2的末注册信息生成位置在 DevExpress.Web.ASPxDataControls 下的 Utils 类里的GetTrialScript()  
用Disassembler打开看到代码如下

public static string GetTrialScript()
{
      
string text1 = "var trialNode = document.createElement('DIV');\n";
      text1 
= text1 + "document.body.insertBefore(trialNode, document.body.childNodes[0]);\n";
      text1 
= text1 + "trialNode.innerHTML = 'This application was created using the TRIAL version of the ASPxGrid and Editors Library.<br>';\n";
      text1 
= text1 + "trialNode.innerHTML += 'Visit <a href=\"http:\\www.devexpress.com\">www.devexpress.com</a> to obtain a licensed copy.';\n";
      text1 
= text1 + "trialNode.style.margin = 5;\n";
      text1 
= text1 + "trialNode.style.position = 'absolute';\n";
      text1 
= text1 + "trialNode.style.left = 0;\n";
      text1 
= text1 + "trialNode.style.top = 0;\n";
      text1 
= text1 + "trialNode.style.zIndex = 100000;\n";
      text1 
= text1 + "trialNode.style.font = 'messagebox';\n";
      text1 
= text1 + "trialNode.style.color = 'red';\n";
      
return Utils.MakeJavascript(text1);
}



调用在DevExpress.Web.ASPxDataControls 下的 ASPxWebControlBase 类里OnPreRender()的
用Disassembler打开看到代码如下

protected override void OnPreRender(EventArgs e)
{
      
base.OnPreRender(e);
      ScriptsRegistrator.RegisterTrialScripts(
this.GetPage(), this.GetScriptFilesPath());
}

 


把DevExpress.Web.ASPxDataControls.dll复制到第一步建的文件夹里,运行解压的BAT后得到DevExpress.Web.ASPxDataControls.il,跟着用EDITPLUS打开.查找 OnPreRender ,
把OnPreRender里的代码

原代码    .method family hidebysig virtual instance void
            OnPreRender(class [mscorlib]System.EventArgs e) cil managed
    {
      // 代码大小       25 (0x19)
      .maxstack  2
      IL_0000:  ldarg.0
      IL_0001:  ldarg.1
      IL_0002:  call       instance void [System.Web]System.Web.UI.WebControls.WebControl::OnPreRender(class [mscorlib]System.EventArgs)
      IL_0007:  ldarg.0
      IL_0008:  callvirt   instance class [System.Web]System.Web.UI.Page DevExpress.Web.ASPxDataControls.ASPxWebControlBase::GetPage()
      IL_000d:  ldarg.0
      IL_000e:  callvirt   instance string DevExpress.Web.ASPxDataControls.ASPxWebControlBase::GetScriptFilesPath()
      IL_0013:  call       void DevExpress.Web.ASPxDataControls.ScriptsRegistrator::RegisterTrialScripts(class [System.Web]System.Web.UI.Page,
                                                                                                         string)
      IL_0018:  ret
    } // end of method ASPxWebControlBase::OnPreRender

修改成    .method family hidebysig virtual instance void
            OnPreRender(class [mscorlib]System.EventArgs e) cil managed
    {
      // 代码大小       25 (0x19)
      .maxstack  2
      IL_0000:  ldarg.0
      IL_0001:  ldarg.1
      IL_0002:  call       instance void [System.Web]System.Web.UI.WebControls.WebControl::OnPreRender(class [mscorlib]System.EventArgs)
      IL_0018:  ret
    } // end of method ASPxWebControlBase::OnPreRender



再用 生成的BAT生成新的DLL就可以使用了.(生成BAT里的StrongKey.snk在DevExpress.ASPxGrid.Suite.v1.5.01.Full.Source.For.ASP.NET 里有,你可以在网上找到)
除此之外,调用ASPxGridV2里弹出的对话框在


最后,好像是 .NET的CACHE在做怪.我昨晚明明改好了,但是在程序里怎么刷新都还是有末注册的信息出来.今天反安装了DevExpress.Web.ASPxGrid2,直接调用DevExpress.Web.ASPxDataControls.dll就没有任何注册信息出来了,周一再仔细的调试一下.看能不能做到完美,呵呵.

posted on 2005-04-08 12:09  颓废  阅读(3127)  评论(2编辑  收藏  举报