拖拉scrollbar時出現錯亂的現象

zhaojuzi 2009-01-15 11:06:50
如题,拖动滚动条DATAGRID的数据就会错乱!!
一下是代码,各位请帮忙看看,感激不尽!!~~~~~~~
<mx:DataGrid id="dg" width="700" height="100%">
<mx:columns>
<mx:DataGridColumn headerText="実区" width="80" dataField="k">
<mx:itemRenderer>
<mx:Component> <mx1:DatagirdCheckBox isSelected="{data.k}" />
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="工 程" width="470" dataField="data">
<mx:itemRenderer>
<mx:Component> <mx1:GroupLabelRenderer array="{data.data}"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="計 画" dataField="data">
<mx:itemRenderer>
<mx:Component>
<mx1:GroupTextRenderer array="{data.data}" />
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>



×××××××××GroupLabelRenderer ×××××××××××××××××

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="jp.mdis.msu.flex.control.ui.*"
implements="mx.controls.listClasses.IDropInListItemRenderer, mx.controls.listClasses.IListItemRenderer"
verticalGap="0" horizontalGap="0" paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0"
width="633" height="100%" creationComplete="addComponet()" borderStyle="none" verticalScrollPolicy="off" horizontalScrollPolicy="off">
<mx:Style>
.solidBorder{borderSides:"top left";
borderStyle:"solid";
borderThickness:"1";}
</mx:Style>
<mx:Script>

<![CDATA[
import mx.controls.listClasses.BaseListData;
import mx.controls.Label;
import mx.containers.GridItem;
import mx.containers.GridRow;
import mx.containers.Grid;
import mx.controls.TextInput;
public var aa:Number;
public var array:Array;
private var _listData:BaseListData;
public function get listData():BaseListData
{
return _listData;
}
public function set listData(value:BaseListData):void
{
_listData = value;
}
public function addComponet():void{
var obj:Object = new Object();
obj = array[0];
lb.text = obj.ktstepCd;
var ktdetailCdArr:Array = obj.ktdetailCd as Array;
var ktdetailCdArrNum:int = ktdetailCdArr.length;
for(var i:int = 0; i<ktdetailCdArrNum; i++){
var label:Label = new Label();
var hbox:HBox = new HBox();
hbox.height=26;
hbox.styleName="solidBorder";
hbox.width = lableID.width;
label.height = 24
label.text = ktdetailCdArr[i];
hbox.addChild(label);
lableID.addChild(hbox);
if(ktdetailCdArr[i].toString() == ""){
lableID.visible = false;
}
}
}
]]>
</mx:Script>
<mx:VBox id="leftBox" width="230" height="100%"
borderSides="bottom top"
borderStyle="nones"
borderThickness="0"
paddingBottom="0"
verticalAlign="middle">
<ns1:MsuLabel id="lb" textAlign="left" fontWeight="normal"/>
</mx:VBox>
<mx:VBox id="lableID" width="240" height="100%" verticalGap="0" horizontalGap="0"
borderStyle="none" borderSides="top" borderThickness="1" >
</mx:VBox>
</mx:HBox>

×××××××××××××GroupTextRenderer ××××××××××××××××××××××××
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalGap="0" horizontalGap="0" paddingRight="0" paddingTop="1"
implements="mx.controls.listClasses.IDropInListItemRenderer, mx.controls.listClasses.IListItemRenderer"
width="100%" height="100%" creationComplete="addComponet()" borderStyle="none" verticalScrollPolicy="off" horizontalScrollPolicy="off">
<mx:Style>
.border{borderSides:"bottom left";
borderStyle:"solid";
borderThickness:"1";
verticalAlign:"middle";}
.border1{ verticalAlign:"middle";
horizontalAlign:"left";}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.controls.listClasses.BaseListData;
[Bindable]
/**
* Renderの有効性の設定
*
* @default "";
*/
public var inputFlg:Boolean = true;

import mx.controls.Label;
import mx.containers.GridItem;
import mx.containers.GridRow;
import mx.containers.Grid;
import mx.controls.TextInput;
import mx.controls.Alert;
public var aa:Number;
public var array:Array;
public var arr:Array ;
private var _listData:BaseListData;
public function get listData():BaseListData
{
return _listData;
}
public function set listData(value:BaseListData):void
{
_listData = value;
}
public function addComponet():void{
var obj:Object = new Object();
obj = array[0];
arr= obj.text as Array;
var arrNum:int = arr.length;

for(var i:int = 0; i<arrNum; i++){
var textInput:TextInput = new TextInput();
var hbox:HBox = new HBox();
hbox.height=26;
hbox.styleName="border";
textInput.height = 24;
textInput.width = 130;
textInput.maxChars = 8;
textInput.id = ""+i+"";
textInput.text = arr[i];
textInput.enabled = inputFlg;
textInput.addEventListener(Event.CHANGE,change);
textInput.styleName = "border1";
hbox.width = lableID.width
hbox.addChild(textInput);
lableID.addChild(hbox);
}
}
public function change(evt:Event):void{
var index:int = int(evt.target.id);
//Alert.show(evt.target.id);
arr[index] = evt.target.text;
// Alert.show("array[index]:"+array[index]);
}
override public function set data(value:Object):void
{
super.data = value;
}

]]>
</mx:Script>
<mx:VBox id="lableID" width="175" height="100%" verticalGap="0"
borderSides="top" borderThickness="1" verticalAlign="middle" >
</mx:VBox>
</mx:HBox>
...全文
119 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaojuzi 2009-04-21
  • 打赏
  • 举报
回复
有遇到一个类似的问题,也是我自己写的一个ItemRender类,
但是当拖动Grid的横向滚动条的时候,各行之间的数据就会错乱,
各位GGJJ帮忙出出主意吧,
谢谢了~~
zhaojuzi 2009-01-16
  • 打赏
  • 举报
回复
是的,第二列是动态生成的
zhaojuzi 2009-01-16
  • 打赏
  • 举报
回复
呵呵,我已经找到解决办法了,不过还是谢谢2位支持啊,
楼上的说得太对了,呵呵
riasiao 2009-01-16
  • 打赏
  • 举报
回复
FLEX和FLASH区的结贴效率太低了!
xxcn2007 2009-01-15
  • 打赏
  • 举报
回复
第2列每一项的高度不定?
zhaojuzi 2009-01-15
  • 打赏
  • 举报
回复
可能是我说的不太明白,
其实就是DataGrid下面的格式是不规则的,
不如说有3列值
---------------------
A |B | C
------------
|B1 | C1
----------------------

上面这就是一行数据表示的3列值,
第一列是A,第2列根据A,从DB取出来有几个值,就应该都显示在第2列,
就是说第2列的每一个单元格里面显示的值得个数是不固定的,

虽然现在我能动态的实现这种效果,但是拖动滚动条时,数据就会上下滚动,出现错乱,

希望各位提点意见,谢谢
zhaojuzi 2009-01-15
  • 打赏
  • 举报
回复
各位高手请过来帮帮忙啊,

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧