Apache flex 使用列和行索引获取flex datagrid单元格值
我将flex用于一个应用程序,但在从一个列中有复选框的datagrid恢复数据时遇到了一些问题,问题是我不能使用selectedIndex或selectedItem函数,因为它们用于保存选中的项 有没有办法使用列和行索引恢复datagrid信息?比如: MyDataGrid[row][column]或MyDataProvider[row][column]或任何函数组合,允许我仅使用行和列恢复信息Apache flex 使用列和行索引获取flex datagrid单元格值,apache-flex,datagrid,row,recovery,Apache Flex,Datagrid,Row,Recovery,我将flex用于一个应用程序,但在从一个列中有复选框的datagrid恢复数据时遇到了一些问题,问题是我不能使用selectedIndex或selectedItem函数,因为它们用于保存选中的项 有没有办法使用列和行索引恢复datagrid信息?比如: MyDataGrid[row][column]或MyDataProvider[row][column]或任何函数组合,允许我仅使用行和列恢复信息 感谢如果您只想使用行和列索引获取数据网格的单元格值,可以扩展DataGrid组件并添加一个简单的函数
感谢如果您只想使用行和列索引获取数据网格的单元格值,可以扩展DataGrid组件并添加一个简单的函数 这是一本书 它看起来像这样: //自定义数据网格
<?xml version="1.0" encoding="utf-8"?>
<s:DataGrid xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="400" height="300">
<fx:Script>
<![CDATA[
import spark.components.gridClasses.GridColumn;
public function getElementAt(row:int, col:int):Object
{
if (this.dataProvider.length < row + 1 || this.columns.length < col + 1)
return null;
else
return this.dataProvider.getItemAt(row)[(this.columns.getItemAt(col) as GridColumn).dataField];
}
]]>
</fx:Script>
</s:DataGrid>
您将获得“fld13”如果您只想使用行和列索引获得数据网格的单元格值,您可以扩展DataGrid组件并添加一个简单的函数 这是一本书 它看起来像这样: //自定义数据网格
<?xml version="1.0" encoding="utf-8"?>
<s:DataGrid xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="400" height="300">
<fx:Script>
<![CDATA[
import spark.components.gridClasses.GridColumn;
public function getElementAt(row:int, col:int):Object
{
if (this.dataProvider.length < row + 1 || this.columns.length < col + 1)
return null;
else
return this.dataProvider.getItemAt(row)[(this.columns.getItemAt(col) as GridColumn).dataField];
}
]]>
</fx:Script>
</s:DataGrid>
如果使用原始DataGrid控件,则会得到“fld13”,最好使用
DataGridColumn
的itemToLabel
方法,因为item[dataField]
在属性值包含点符号时会导致异常,例如“customer.name”
:
框架使用相同的方法提供网格单元中显示的文本。如果网格中的复选框由布尔属性驱动,则返回值将为
true
或false
如果使用原始DataGrid控件,则最好使用DataGridColumn
的itemToLabel
方法,因为item[dataField]当属性值包含点表示法时,例如“customer.name”
将导致异常:
框架使用相同的方法提供网格单元中显示的文本。如果网格中的复选框由布尔属性驱动,则返回值将为true
或false
是否可以显示一些显示问题的代码?恐怕我不明白你的问题。Flex中有几个数据网格组件,所以我们不知道您所说的是哪一个。有一个包含行/列信息的数据库,但很难说它是否对您有帮助。DataGrid只接受实现IList的数据提供程序。IList有一个名为getItemAt的方法。这将为您提供该行(即该行中显示的列表中的对象)。可以通过分析DataGrid结构来确定列。但是有件事困扰着我,你是怎么编码的?似乎您没有以正确的方式使用DataGrid、渲染器和其他东西。您能展示一些显示问题的代码吗?恐怕我不明白你的问题。Flex中有几个数据网格组件,所以我们不知道您所说的是哪一个。有一个包含行/列信息的数据库,但很难说它是否对您有帮助。DataGrid只接受实现IList的数据提供程序。IList有一个名为getItemAt的方法。这将为您提供该行(即该行中显示的列表中的对象)。可以通过分析DataGrid结构来确定列。但是有件事困扰着我,你是怎么编码的?您似乎没有以正确的方式使用DataGrid、渲染器等。
getElementAt(0, 1)
public function getElementAt(row:int, col:int):Object {
var item:Object = dataProvider.getItemAt(row)
var column:DataGridColumn = dataGrid.columns[column] as DataGridColumn;
var value:String = column.itemToLabel(item);
return value;
}