当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 接到上面的order, 将DataGrid改写成表头固定, 而要
 

 

 ·我的百宝箱之tomcat全攻略     »显示摘要«
    摘要:tomcat全攻略 一:简介 tomcat是jakarta项目中的一个重要的子项目,其被javaworld杂志的编辑选为2001年度最具创新的java产品(most innovative java product),同时它又是sun公司官方推荐的servlet和jsp容器(具体可以见http://java.sun.com/products/jsp/tomcat/),因此其越来越多的受到软件公司和开......
 ·3d游戏引擎设计与实现(12)    »显示摘要«
    摘要:3d游戏引擎设计与实现(12) 游戏的地图文件格式是非常重要的一种格式,设计得好与坏,都关系到读写和渲染速度。如果保存的信息过少,就会导致渲染时花费大量的时间在计算。就目前主流的3d游戏,都会用这种思想:就是能预先计算的东西,就要先计好,不是在游戏中实现计算。比如用bsp树来保存冲突检测,保存可见性等,都是为了提高渲染速度。 在cs的bsp文件格式中也是这样的,先计算好所有场境的bsp数据......


Asp.net DataGrid control with Fixed Header and Scrollbar

接到上面的order, 将datagrid改写成表头固定, 而要带scroll  bar滚动记录. 看了felix兄的文章

【程序编程相关:Windows“贴身秘书”—“运行”命令

【推荐阅读:TeX中显示大小写罗马数字

fixed header scrollable datagrid control 【扩展信息:BCB怎样让程序脱离BCB独立运行

http://blog.joycode.com/felix/articles/32789.aspx

好像有点不太适合自己用. 他将header截出来, 做成div, 然后把原来的datagrid header盖住, 形成一种假象, 就像表头真的被固定了, 而且两者的位置好像对得不准, 新生成的header有点左移(不知道是不是我机子的问题).  后来按照我跟上司的设想, 因为datagrid最终输出的是一个table, 所以将这个table拆分为三部份, header, items, pager. 然后在items外面加一个div, 用javascript控制div是否出现scroll bar.

btw: 因为datagrid我们是重新封装过的. 有部份代码只适合此grid使用, 但万变不离其中.  enjoy it .

  /// <summary>

  /// author      : kenneth lee

  /// create date : 2004-11-8

  /// description : override render方法, 在网格输出时, 修改网站的样式.

  ///               将整个datagrid划分为headers, items, pager 三个表格, 利用div的属性控制是否出现scroll bar.

  ///               并且确保客户端调整控件其它样式时, 其样式保持不变.

   /// </summary>

  /// <param name="writer"></param>

  protected override void render(htmltextwriter writer)

  {

   //确定datagrid处于何种状态, 是运行时还是设计时

   //control.site属性是获取控件当前站点的信息

   bool griddesignmode = ((site != null) && (site.designmode));

   //只有运行时输出以下内容

   if (!griddesignmode)

   {

    

    // 将html转换为stringbuilder

    stringwriter sw = new stringwriter();

    htmltextwriter htw = new htmltextwriter(sw);

    //保证每列的宽度

    style["table-layout"] = "fixed";

    // 输出到sw中.

    base.render(htw);

    stringbuilder sbrenderedtable = sw.getstringbuilder();

    htw.close();

    sw.close();

    string temp = sbrenderedtable.tostring();

    if (sbrenderedtable.length > 0)

    {

     if (this.headertext == string.empty)

     {

      // 将datagrid的id替换为表头id

      sbrenderedtable.replace(id,id + "_headers", 0, (temp.indexof(id) + id.length));

      

      // 为保持表头与表脚的高度, 将height属性去掉.

      sbrenderedtable.remove(sbrenderedtable.tostring().tolower().indexof("height:"), this.height.tostring().length+8);

      

      temp = sbrenderedtable.tostring();

      

      //找出表头的长度. 以便分拆

      int start = temp.tolower().indexof(@"<");

      int end = temp.tolower().indexof(@">") + 1;

      string strtablestyle = temp.substring(start,end-start);

      

      

      //因为要将datagrid划分为三个表格, 所以用一个大的div固定它们的宽度.并且保证scroll bar不出现.

      //要确保scroll bar不出, 用overflow-y:hidden就够了

      

      if (this.height.tostring() == string.empty || this.height.tostring() == "100%")

      {

       sbrenderedtable.insert(0,@"<div id=´" + this.id + "_full´ style=´align:center; width: 100%; overflow-y:hidden´>");

      }

      else

      {

       sbrenderedtable.insert(0,@"<div id=´" + this.id + "_full´ style=´align:center; width: 100%; overflow-y:hidden;height:" + this.height.tostring() + @"´>");

      }

      


...   下一页
 ·在sql中调用com对象    »显示摘要«
    摘要:在sqlserver中创建 ole 对象实例,有时我们想到数据库中执行存储过程的时候,同时调用系统中的com对象。此时我们可以采用sql的系统存储过程sp_oacreate ,此存储过程的调用要有一定的权限,只有 sysadmin 固定服务器角色的成员才能执行 sp_oacreate。 语法sp_oacreate progid, | clsid, objecttoken output [ , c......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE