2011-02-25 77 views

回答

0

这是一个例子:

If (CType(row.FindControl("chkEmailAlert"), CheckBox).Checked = True) Then 
    Arr_EmailAlert(i) = "True" 
Else 
    Arr_EmailAlert(i) = "False" 
End If 

这样一个多级,被称为DirectCast将在那里和使用FindControl方法我们可以找到控制复选框的ID和值也使用它。

+0

@kalyan ..其投掷的错误对于CType和FindControl。 – user594979 2011-02-25 08:56:41

2

由于itemRenderer可以在DataGrid滚动时回收,因此您应该将复选框的值绑定到dataProvider中的值。然后,你就可以通过ArrayCollection的循环,并得到所有行的其中Selected==true

我的数据对象:

package 
{ 
    [Bindable] 
    public class MyData 
    { 
    private var _name:String; 
    private var _selected:Boolean; 

    public function get Name():String { return _name; } 
    public function set Name(value:String):void { _name = value; } 

    public function get Selected():Boolean { return _selected; } 
    public function set Selected(value:Boolean):void { _selected = value; } 

    } 
} 

我的DataGrid:

<mx:DataGrid dataProvider="{myArrayCollectionOfMyDataObjects}"> 
    <mx:columns> 
    <mx:DataGridColumn headerText="Name" dataField="Name"/> 
    <mx:DataGridColumn headerText="Selected" dataField="Selected"> 
     <mx:itemRenderer> 
     <fx:Component> 
      <mx:VBox width="100%" height="100%" paddingLeft="2" verticalAlign="middle" horizontalAlign="center" horizontalScrollPolicy="off"> 
      <mx:CheckBox id="chkSelected" change="{data.Selected = chkSelected.selected}" selected="{data.Selected}" /> 
      </mx:VBox> 
     </fx:Component> 
     </mx:itemRenderer> 
    </mx:DataGridColumn> 
    </mx:columns> 
</mx:DataGrid> 
+0

工作完美,只有一个例外。在编码改变时出现编译错误。删除{}会使所有的工作都完美无缺。 – JorganPubshire 2015-02-27 16:28:20