悟空-简单就好
.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 针式个人知识库管理 阅读(1473) 评论(16)  编辑 收藏
Comments
  • 无名      
    Posted @ 2006-04-19 12:48
    两次?都是那里,说说看,我还真不会   回复  引用  查看    
  • #2楼 
    老燕      
    Posted @ 2006-04-19 12:59
    看看您这句
    true == this.Page.IsPostBack
    ???

      回复  引用  查看    
  • #3楼 
    Michael.zh      
    Posted @ 2006-04-19 13:02
    看不懂,绑定都是 !Page.IsPostBack 时做的   回复  引用  查看    
  • #4楼 
    冰戈      
    Posted @ 2006-04-19 13:25
    true == this.Page.IsPostBack
    //
    业余水平写出的业余代码,呵呵   回复  引用  查看    
  • #5楼 
    lone [未注册用户]
    Posted @ 2006-04-19 13:46
    呵呵,大家都批评这个IsPostBack的写法了
    楼主这种写法确实很业余哦~
      回复  引用    
  • #6楼 
    浪子      
    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)   回复  引用  查看    
  • #8楼 
    mikespook      
    Posted @ 2006-04-19 15:32
    谁看看编译后的结果比较比较吧~~

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

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

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

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

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

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

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

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-05-16 16:37 编辑过


相关链接: