悟空-简单就好
.net企业级应用研究

考虑最复杂的情况
开发出最简单的实现


多种方式,帮你快速找到文档(知识点)!
请大家分析一下,下述代码执行了几次数据绑定?
        if (this.Page.IsPostBack)//多谢@浪子等指点
        {
            SetSelectCommandParameter();//为什么要放在这里
            //this.gvEnglishWord.DataSourceID = "SqlDataSourceSearch";
            this.SqlDataSourceSearch.Select(DataSourceSelectArguments.Empty);
            this.gvEnglishWord.Visible = true;
            this.gvEnglishWord.DataBind();
        }
        else
        {
            this.gvEnglishWord.Visible = false;
        }
如果是两次,您说对了!
这里只是提个醒哦:别让代码执行不必要的路径和不要让数据绑定执行了多次了。
如果没有注意到这个问题,赶快检查一下是否存在上述影响程序执行性能的代码问题!
(很多人没有注意这两个“细节”哦,应该不会是“新手问题”,估计还有很多人...)

*以上心得是在开发“英语单词查找-返回表格式结果”的产品中,才发现自己以前没有太注意这面的问题;
根据上述进行系统重构,性能有了很大的改善。
英语单词查找-返回表格式结果
posted on 2006-04-19 12:02 新悟空 阅读(1492) 评论(16)  编辑 收藏 网摘
Comments
  • 无名      
    Posted @ 2006-04-19 12:48
    两次?都是那里,说说看,我还真不会   回复  引用  查看    
  • 老燕      
    Posted @ 2006-04-19 12:59
    看看您这句
    true == this.Page.IsPostBack
    ???

      回复  引用  查看    
  • Michael.zh      
    Posted @ 2006-04-19 13:02
    看不懂,绑定都是 !Page.IsPostBack 时做的   回复  引用  查看    
  • 冰戈      
    Posted @ 2006-04-19 13:25
    true == this.Page.IsPostBack
    //
    业余水平写出的业余代码,呵呵
      回复  引用  查看    
  • lone[未注册用户]
    Posted @ 2006-04-19 13:46
    呵呵,大家都批评这个IsPostBack的写法了
    楼主这种写法确实很业余哦~
      回复  引用    
  • 浪子      
    Posted @ 2006-04-19 13:48
    @悟
    大家说的不是这个意思

    是说只要这样子写就可以了

    if (this.Page.IsPostBack)

    本来就是bool型,何必再做一次比较呢?

    并不是对这是逻辑表达式,不是赋值表达式的不解。
      回复  引用  查看    
  • #7楼[楼主]
          
    Posted @ 2006-04-19 14:06
    @浪子
    谢谢!
    if (this.Page.IsPostBack)
    if (!this.Page.IsPostBack)或if (false==this.Page.IsPostBack)
      回复  引用  查看    
  • mikespook      
    Posted @ 2006-04-19 15:32
    谁看看编译后的结果比较比较吧~~

    我觉得一个健壮的编译器在编译
    if (this.Page.IsPostBack)

    if (true==this.Page.IsPostBack)
    的结果是一样的~~
      回复  引用  查看    
  • 兰亭      
    Posted @ 2006-04-19 18:31
    if (IsPostBack) return;

    // other function
      回复  引用  查看    
  • aaaaaaa[未注册用户]
    Posted @ 2006-04-19 19:14
    垃圾   回复  引用    
  • laifangsong      
    Posted @ 2006-04-20 00:50
    看了一下reflector,原来Page是从Control继承下来的虚属性,类型是
    System.Web.UI.Page;并在System.Web.UI.Page类的构造函数中将该属性
    构造为Page对象。

    怪不得this.Page这种东西跑出来都可以。。。晕了,呵呵。

      回复  引用  查看    
  • 笑望人生      
    Posted @ 2006-04-20 15:56
    贴主,应该是
    if(!Page.IsPostBack)
    {
    }
    esle
    // ...

    你的代码是每次回发绑定,而不是页面第一次执行绑定。

    另,您写的代码示例最好仅调用标准类库中的代码,你的代码我实在看不明白写的什么,许多方法调用的是您自己的类库,而这些类库我们是无法了解做什么的。
      回复  引用  查看    
  • moer[未注册用户]
    Posted @ 2006-04-21 15:50
    请教,你的英语数据库哪里来的?   回复  引用    
  • #14楼[楼主]
          
    Posted @ 2006-04-21 16:59
    @moer
    大部分是网络上找的,有一个大的词典是向朋友买的
      回复  引用  查看    
  • lazylu[未注册用户]
    Posted @ 2006-05-18 20:55
    @笑望人生
    gvEnglishWord估计是个GRIDVIEW
    SqlDataSourceSearch估计是个数据源?
      回复  引用    
  • 业余[未注册用户]
    Posted @ 2006-08-21 17:32
    代码还是有问题.
    if (this.Page.IsPostBack)
    -->
    if (!IsPostBack)就可以了.
    不明白楼主在说什么???
      回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

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

0 379039




相关文章:

相关链接: