RIACHINA 中国RIA开发者论坛RIA 客户端开发FLASH 开发专区 菜鸟求助!关于DataProvider类的一些问题,好心人帮帮忙

菜鸟求助!关于DataProvider类的一些问题,好心人帮帮忙

菜鸟求助!关于DataProvider类的一些问题,好心人帮帮忙

我买了本《完全手册Flash/Flex ActionScript 3.0 交互式开发详解:语法基础、典型应用、视频网站实例》但是里面一些例子看不懂,去他们的论坛提问,又没人回答我,所以请好心人回答一下:

从该书169页的下拉列表例子中,他们用了DataProvider类,以及之后的List、TitleList都用到了这个类,从书上的解释,我只知道这个是项目列表的数据模型,但是这个类具体怎么用,用的时候哪些属性,分别用来干什么和哪些参数是必须有的,我都不知道!

private function SetupComboBox():void
  {
    cb = new ComboBox();
  //设置可编辑属性
  cb.editable = true;
  cb.move(150,150);
  cb.width = 150;
  cb.prompt = "请选择一个银行:";
 
  // 数据列表
  var dpataProvider = new DataProvider();
  dp.addItem({BankName:"中国建设银行", BankID:"0"});
  dp.addItem({BankName:"中国工商银行", BankID:"1"});
  dp.addItem({BankName:"中国农业银行", BankID:"2"});
  dp.addItem({BankName:"中国银行", BankID:"3"});
  dp.sortOn(["BankID"]);
 
  cb.dataProvider = dp;
  cb.labelField = "BankName";
  cb.addEventListener(Event.CHANGE, BankSelected);
  addChild(cb);
        }

上面是他们光盘上ExampleComboBox.as里的一个代码段,其中

dp.addItem({BankName:"中国建设银行", BankID:"0"});
这句代码中的参数,我看不懂,而且我查API的时候,发现完全可以直接写成下面的代码也可以达到想要的效果

cb.addItem("中国农业银行");

那么为什么还要用DataProvider呢?!

还有这句代码,我也看不懂:cb.labelField = "BankName";

还请解释下

还有,下面是他们TitleList的例子:

public function ExampleTitleList()
  {
  // 构造函数,初始化
  var dpataProvider = new DataProvider();
  dp.addItem({label:"Image1",source:"http://www.helpexamples.com/flash/images/image1.jpg"});
  dp.addItem({label:"Image2",source:"http://www.helpexamples.com/flash/images/image2.jpg"});
  dp.addItem({label:"Image3",source:"http://www.helpexamples.com/flash/images/image3.jpg"});
  dp.addItem({label:"Image4",source:"http://www.helpexamples.com/flash/images/image1.jpg"});
  dp.addItem({label:"Image5",source:"http://www.helpexamples.com/flash/images/image2.jpg"});
  dp.addItem({label:"Image6",source:"http://www.helpexamples.com/flash/images/image3.jpg"});
 
  var tileListileList = new TileList();
  // 绑定数据源
  tileList.dataProvider = dp;
  tileList.direction = ScrollBarDirection.VERTICAL;
  // 设置列表的高和宽
  tileList.columnWidth = 200;
  tileList.rowHeight = 134;
  // 设置列表显示的列数
  tileList.columnCount = 2;
  tileList.rowCount = 2;
  tileList.move(10, 10);
  // 把列表组件增加到舞台
  addChild(tileList);
  }

中间他们又用了DataProvider类,但是这次的参数又不一样

dp.addItem({label:"Image1",source:"http://www.helpexamples.com/flash/images/image1.jpg"});

花括号中逗号分开的两个参数,类型又不一样!以及这句代码的作用: tileList.direction = ScrollBarDirection.VERTICAL;
还有TitleList中如何设置单元格的大小呢?!

最后,总结下,我要问的问题吧:

1.DataProvider 有什么用?!
2.在使用列表组件的时候为什么要用DataProvider ,不用的话会有哪些不方便,或者程序性能上有什么损失?!
3.DataProvider .addItem({"这里究竟要写些什么参数,又可以写什么参数?!"})
4.使用了DataProvider来添加数据以后,原来的List,TitleList,ComboBox以及其他一些我还没学到的组件中要添加哪些代码来和DataProvider 进行关联呢?!
 

回复:菜鸟求助!关于DataProvider类的一些问题,好心人帮帮忙

dataprovider 就是个数据提供者,也可以理解为数据源。

dp.addItem({BankName:"中国建设银行", BankID:"0"});
和cb.addItem("中国农业银行");  在表面看是一样的,但是后者只有一个显示的“银行名” 前者不光有银行名还有 银行的ID,这样便于对数据的操作,如果只是做界面的现实,cb.addItem("中国农业银行");就行,但是要是要做更深入的操作 有了ID会更方便些。

dp.addItem({label:"Image1",source:"http://www.helpexamples.com/flash/images/image1.jpg"});
这个也一样,label 只是说明的图片的名字 source  进一步说明了图片的具体位置,这样才能读取图片,label source 以及bankname bankid都是 自己去的名字。形式是一样的,一个是标签用于显示在界面一个是用于操作的数据 ,用dp.source  dp.BankID应该就能得到它的值。


大部分需要数据填充的组件都有dataprovider这个属性的。

说的也不是很明白,还请见谅。
偶也是初学。
 
1  /  1  页   1 跳转

版权所有 riachina.com   Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.0468738 second(s) , 3 queries.
返顶部