2011-02-25 101 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