FLEX实践—Datagrid动态创建列TypeError: Error #1010
2009-09-24 14:16
561 查看
在做Datagrid动态创建列的时候遇到了以下的问题:
1)将列的属性从数据库中读取出来
2)通过for循环动态创建DataGridColumn
3)用数据库中读取出来的值设置该DataGridColumn的属性
代码片断如下:
for(var i:Number=0;i<tempArray.length;i++){
var dgColumn:DataGridColumn = new DataGridColumn();
dgColumn = findDataGridColumn(tempArray[i].dataField);
dgColumn.width =tempArray[i].width;
dgColumn.headerText = tempArray[i].headerText;
dgColumn.dataField = tempArray[i].dataField;
templateColumns.push(dgColumn);
}
在运行时当表格列从四列切换成五列时出现如下错误:
TypeError: Error #1010: 术语尚未定义,并且无任何属性。
at mx.controls::DataGrid/http://www.adobe.com/2006/flex/mx/internal::resizeColumn()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/controls/DataGrid.as:2827]
at mx.controls.dataGridClasses::DataGridColumn/set width()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as:1188]
。。。。。。
通过提示发现错误出现在dgColumn.width =tempArray[i].width;上
原因猜测:
可能是因为表格在从四列切换成五列时需要重新计算每一列的宽度,而在动态创建表格时还未真正生成表格的列就已经对其宽度进行附值,导致找不到对应的属性(以上原因只是个人猜测)
解决方案:
先创建表格,再对其宽度进行附值
将代码改成如下:
for(var i:Number=0;i<tempArray.length;i++){
var dgColumn:DataGridColumn = new DataGridColumn();
dgColumn = findDataGridColumn(tempArray[i].dataField);
//dgColumn.width =tempArray[i].width;
dgColumn.headerText = tempArray[i].headerText;
dgColumn.dataField = tempArray[i].dataField;
templateColumns.push(dgColumn);
}
grid.columns = templateColumns; //grid为表格ID
for(var i:Number=0;i<tempArray.length;i++){
grid.columns[i].width = tempArray[i].width;
}
1)将列的属性从数据库中读取出来
2)通过for循环动态创建DataGridColumn
3)用数据库中读取出来的值设置该DataGridColumn的属性
代码片断如下:
for(var i:Number=0;i<tempArray.length;i++){
var dgColumn:DataGridColumn = new DataGridColumn();
dgColumn = findDataGridColumn(tempArray[i].dataField);
dgColumn.width =tempArray[i].width;
dgColumn.headerText = tempArray[i].headerText;
dgColumn.dataField = tempArray[i].dataField;
templateColumns.push(dgColumn);
}
在运行时当表格列从四列切换成五列时出现如下错误:
TypeError: Error #1010: 术语尚未定义,并且无任何属性。
at mx.controls::DataGrid/http://www.adobe.com/2006/flex/mx/internal::resizeColumn()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/controls/DataGrid.as:2827]
at mx.controls.dataGridClasses::DataGridColumn/set width()[C:/autobuild/3.2.0/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as:1188]
。。。。。。
通过提示发现错误出现在dgColumn.width =tempArray[i].width;上
原因猜测:
可能是因为表格在从四列切换成五列时需要重新计算每一列的宽度,而在动态创建表格时还未真正生成表格的列就已经对其宽度进行附值,导致找不到对应的属性(以上原因只是个人猜测)
解决方案:
先创建表格,再对其宽度进行附值
将代码改成如下:
for(var i:Number=0;i<tempArray.length;i++){
var dgColumn:DataGridColumn = new DataGridColumn();
dgColumn = findDataGridColumn(tempArray[i].dataField);
//dgColumn.width =tempArray[i].width;
dgColumn.headerText = tempArray[i].headerText;
dgColumn.dataField = tempArray[i].dataField;
templateColumns.push(dgColumn);
}
grid.columns = templateColumns; //grid为表格ID
for(var i:Number=0;i<tempArray.length;i++){
grid.columns[i].width = tempArray[i].width;
}
相关文章推荐
- FLEX如何动态创建DataGrid组件详解
- Flex中根据CSV文件来动态创建DataGrid(包括列标题)
- FLEX4实践—动态生成DataGrid及应用客户化itemRenderer
- FLEX中使用AS动态创建DataGrid
- FLEX实践:动态显示DataGrid的列和内容
- Flex 动态创建多个曲线图/柱形图 ColumnSeries
- 动态创建DataGrid的模版列
- TypeError: Error #1010: 术语尚未定义,并且无任何属性。at mx.controls::List/createItemRenderer()[E:\dev\4.0.0\framew
- swfobject动态创建Flex
- [导入]动态创建DataGrid的模版列
- Flex动态DataGrid 二
- Flex动态读取XML文件并显示在DataGrid中
- Flex 动态创建 多个曲线图/柱形图 ColumnSeries
- 使用MYSQL、PHP和FLEX实现上传图片,动态在DataGrid中添加下载按钮和上传的图片.
- Flex 根据DataGridColumn 的值动态显示相对应的图片
- 动态创建DataGrid的模版列
- Flex中datagrid动态添加列
- Flex中datagrid动态添加列
- js动态创建DataGrid
- 反射中用Type.GetType 方法 (String) 动态创建类的注意事项