• 来点入门级的:最近遇到的一些小问题及经验


    由于很久没有接触.net(因为公司的技术在最近两年内估计仍会继续用VB6),这两天因为修改一个小程序,由于大意及经验不足,遇到一点小麻烦,郁闷了很久,担搁了不少时间,一点小经验,拿出来共享,希望大家别再范同样的错误.

    为了提升性能,把页面上无需保存视图状态的控件的EnableViewState设为了false
    其中包括一个Panel控件,后来在Panel上放了一个DropDownList控件,
    虽然该控件的EnableViewState设置了True,但无论怎样,它不会触发SelectedIndexChanged事件
    (解决这个问题,最后就是把该控件的父控件设置为保存视图状态)

    由于整个Panel是放在一个DataList控件的SelectItemTemplate项中的,一直误以为是ItemCreated事件或者ItemDataBound事件中有问题
    在ItemCreated和ItemDataBound事件的多次断点调试中,发现了以前没有注意到的一些细节:

    1.在通过设置SelectedIndex =e.Item .ItemIndex 而显示SelectItemTemplate模板时,
     ItemCreated事件在提交的往返进程,以及最终显示时都会触发(最后查到MSDN中有说明),并且是每一行都会检查该事件过程.

    2.存在e.Item.ItemIndex = -1的情况,所以ItemCreated事件需要加上两个判断条件(e.Item.ItemIndex >= 0 & e.Item .ItemType ==ListItemType.SelectedItem)

    3.绑定控件事件,或都修改控件的属性(如:.AutoPostBack =true)等须在ItemCreated事件中进行,而不是ItemDataBound中

    4.页面类中定义的私有变量,在页面回发后会重新初始化,如:private string strTemp="",如果在Page_Load中对strTemp赋了值,
     在DataList控件的SelectItemTemplate项的按钮提交后,ItemDataBound事件中取不到strTemp的值,它已被重新初始化.

  • 相关阅读:
    CentOS下Redis 2.2.14安装配置详解(转载)
    centos 6.3 64位安装php5.5及配置tengine
    linux下安装php扩展redis缓存
    linux安装ruby ruby-devel rubygems bundler
    composer的create-project安装php框架laravel for mac教程
    Homebrew安装php5及composer for mac教程
    KeepAlive详解
    方便mac os 10.9系统中phpstorm配置php运行环境
    Android使用adb工具及root权限完成手机抓包
    linux服务器监控流量sh脚本
  • 原文地址:https://www.cnblogs.com/zyk/p/162191.html
Copyright © 2020-2023  润新知