分类 编程 下的文章

Flex DataGrid 教程,全选\删除选中项

<p><span style="color: rgb(51, 51, 51);">这个demo是对上一个DataGrid demo的修改,目的是为了实现控制checkBox itemrender全选所有项,然后删除所有项。</span></p><p><span style="color: rgb(51, 51, 51);">在 上一个版本中,我在ICheckBox.as的set data function中根据当前value选中checkbox并且将选中的value push到selectedItems array中,这里有一个问题是grid不会初始化被scrollbar 隐藏的项 (谢谢lianyedie找到问题),所以会导致一个问题,没有显示部分的选中的item没有被正确加入到selectedItems array中。这个版本中我主要简化了iCheckBox.as, 不在setvlaue中设置选中项(同时也防止了重复插入选中项的问题)。</span></p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>
<span style="color: rgb(51, 51, 51);">Demo内容:</span></p><p>
<span style="color: rgb(51, 51, 51);">1. 点击check box选中item,或点击全选,选中所有项。
2. 点击删除选中项,选中项的 status将变成 Deleted.</span></p><p><span style="color: rgb(51, 51, 51);">iCheckBox.as</span></p><p><span style="color: rgb(51, 51, 51);">package
{
import flash.events.Event;</span></p><p><span style="color: rgb(51, 51, 51);">import mx.controls.CheckBox;
import mx.core.Application;</span></p><p><span style="color: rgb(51, 51, 51);">public class iCheckBox extends CheckBox
{
private var currentData:Object; //保存当前一行值的对象</span></p><p><span style="color: rgb(51, 51, 51);">public function iCheckBox()
{
 super();
 this.addEventListener(Event.CHANGE,changeHandle)
}</span></p><p><span style="color: rgb(51, 51, 51);">override public function set data(value:Object):void{
 this.selected = value.action.toString() == "true"?true:false;
 this.currentData = value; //保存整行的引用
}
//点击check box时,根据状况向selectedItems array中添加当前行的引用,或者从array中移除
private function changeHandle(e:Event):void{
 var itemArray:Array = Application.application.selectedItems
 this.currentData.action = this.selected.toString()
 if(this.selected){
 itemArray.push(this.currentData)
 }else{
 for(var i:int = 0; i<itemArray.length; i++){
 if(itemArray == this.currentData){
 itemArray.splice(i,1)
 }
}
 }
}</span></p><p><span style="color: rgb(51, 51, 51);">}
}</span></p><p><span style="color: rgb(51, 51, 51);">GridDemo.mxml</span></p><p><span style="color: rgb(51, 51, 51);">//从dataProvider中将选中的项放入 selectedItems array
private function initSelectedItems():void{
 for(var i:int=0; i <idata.length; i++){
 if(idata.action.toString() == "true"){
 this.selectedItems.push(idata)
 }
 }
}</span></p><p>图片 1(6).png</p>>

- 阅读剩余部分 -

C#中的静态常量(const)和动态常量(static和readonly)用法和区别

<p>C#拥有两种不同的常量:静态常量(compile-time constants)和动态常量(runtime constants)。它们有不同的特性,错误的使用不仅会损失效率,还可能造成错误。相比之下,静态常量在速度上会稍稍快一些,但是灵活性却比动态常量差很多。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>//静态常量(隐式是静态的)
public const int compiletimeConstant = 1;
//动态常量
public static readonly runtimeConstant = 1;</p><p>      静态常量在编译时会将其替换为所对应的值,也就是说下面这2句话通过编译器编译后产生的IL是一样的。</p><p>//通过编译后二者会被翻译成相同的中间语言
int myNum = compiletimeConstant;
int myNum = 1;</p><p>      动态常量的值是在运行时获得的。IL中将其标为只读常量,而不是用常量的值代替。</p><p>      静态常量只能被声明为简单的数据类型(内建的int和浮点型)、枚举或字符串。下面的程序段是通不过编译的。你不能用new关键字初始化一个静态常量,即便是对一个值类型来说。</p><p>//这样是错误的
public const DateTime myDateTime = new DateTime(2006,9,1,0,0,0);
//这样是可以的
public static readonly DateTime myDateTime = new DateTime(2006,9,1,0,0,0);</p><p>      只读数据也是常量的一种,它们不能在构造器初始化之后被修改。但是它同静态常量不同,它的值是在运行时才被指派的,因此就会获得更大的灵活性。动态常量可以是任意的数据类型。</p><p>      二者最大的差别在于:静态常量在编译时会将其换为对应的值,这就意味着对于不同的程序集来说,当你改变静态常量的时候需要将其重新编译,否则常量的值不会发生变化,可能引发潜在的问题,而动态常量就不会有这种情况。</p><p> </p><p>     用const定义的常量(隐式是静态的),需要像访问静态成员那样去访问const定义的常量,而用对象的成员方式去访问会出编译错误。 声明的同时要设置常量值。
     从另一方面来说,如果你的确要声明一些从不改变且处处唯一的常量,例如钩子函数SetWindowsHookEx的idHook参数或序列化时的版本等,就应该使用静态常量。但是用到这样的常量的机会不多。一般来说我们应该使用灵活性更高的动态常量。</p><p>               静态常量            动态常量

内存消耗       无                  因为要保存常量 有消耗

初始化         很少的简单类型,    任意类型,可以在类构造函数中赋值
               不能new,必须在
               声明同时赋值

何时发挥作用   编译时进行替换       相当于类中的数据成员</p>

- 阅读剩余部分 -

什么是 MVC 模式?

<p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);"><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">MVC</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。</span></p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);">
<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">MVC 由 Trygve Reenskaug 提出,最早被应用在 SmallTalk-80 环境中。</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">模型—视图—控制器模式</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:</span></p><ul style="list-style-position: outside; list-style-image: initial; margin: 0px 0px 0px 14px; padding: 0px; font-size: 14px; text-align: justify; background-color: rgb(255, 255, 255); line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68);"> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">控制器 - 程序员编写程序应有的功能(实现算法等等)</li> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">视图 - 界面设计人员进行图形界面设计</li> <li style="margin: 0px 0px 0px 2em; padding: 0px; list-style-type: disc; word-wrap: break-word;">模型 - 数据库专家进行数据管理和数据库设计</li></ul><p style="margin: 0px 0px 0.7em; padding: 0px; font-family: Tahoma, Arial, sans-serif; font-size: 14px; line-height: 22.390625px; text-align: justify; background-color: rgb(255, 255, 255);">
ModelViewControllerDiagramZh.png 

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">模型(Model)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);">“数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权利,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。</span>

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">视图(View)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);"> 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。</span>

<span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; word-wrap: break-word; color: rgb(68, 68, 68); font-weight: 700;">控制器(Controller)</span><span style="line-height: 21px; font-family: Tahoma, 'Microsoft Yahei', Simsun; color: rgb(68, 68, 68);"> 控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。</span></p>

- 阅读剩余部分 -

关于flex学习笔记 (一)

先奉献上一个API的地址 .会经常用到的东西

http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/index.htm

然后用到一个案例软件
http://www.adobe.com/devnet/flex/tourdeflex.html

1.Application标签中有三个事件

initialize,creationComplete,applicationComplete(只用Application才有的事件)

creationComplete 和 applicationComplete有什么区别:

  • creationComplete先执行完
  • creationComplete是 Application实例完成后就执行的函数
  • applicationComplete 是整个 Application 所有的东西都实例完成后再执行的函数
  • Flex程序启动事件的顺序initialize、creationComplete、applicationComplete

- 阅读剩余部分 -

随机文章

最近回复

分类

其它

友情连接

推广链接