I believe you can set up
var myCheckBoxFactory:ClassFactory = new ClassFactory(CheckBox);
myCheckBoxFactory.properties = { enabled : determineEnabled() };
and then use that instead of just CheckBox as your renderer.
I'm actually working on something similar and what I'd like to know is
if there is a way to have this driven by the data backing each row. That
is, if I have a grid with columns id and isGreat, I'd like something
like
id | isGreat
1 | \x\
2 | \ \
3 | [x]
4 | [ ]
where this is driven by something like
canSetGreatness(id:Number):Boolean {
return id == 3 || id == 4;
}
(obviously with more logic in the real check function) and where
where [ ] denotes a checkbox and \ \ denotes a disabled checkbox.
Is this doable?
--
Maciek Sakrejda
Truviso, Inc.
http://www.truviso.com
-----Original Message-----
From: David C. Moody <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
Subject: [flexcoders] Re: DataGrid CheckBox Renderer
Date: Thu, 29 May 2008 18:03:37 -0000
Yeah I'm wanting to make it where certain users can't click the
checkbox. so enabled="false" is what I'm looking for.
Also though, is there a way to catch the click on the checkbox and
then run a check, then if the check returns true allow the box to be
clicked and if it returns false alow it not to be clicked.
Thanks,
-David
--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> Not sure what you mean by disabled. Do you mean enabled=false or
> non-editable?
>
>
>
> rendererIsEditor should keep the TextInput from popping up.
>
>
>
> ________________________________
>
> From: [email protected]
[mailto:[EMAIL PROTECTED] On
> Behalf Of David C. Moody
> Sent: Thursday, May 29, 2008 10:04 AM
> To: [email protected]
> Subject: [flexcoders] DataGrid CheckBox Renderer
>
>
>
> OK I'm having some trouble with a datagrid checkbox renderer. I
have
> the renderer workign properly. It updates the dataprovider and
> updates the actual datasource.
>
> My problem is if I want to disable the checkbox, how can I do that?
>
> Here is my flex code:
> <mx:DataGrid y="309" height="200" id="cfDetail" left="10"
right="25"
> change="updateDetail(event)" editable="true"
> itemEditBeginning="checkUser(event)" itemEditEnd="handleItemEditEnd
> (event)">
> <mx:columns>
> <mx:DataGridColumn headerText="Requested Date"
> dataField="req_date" width="115" editable="false"/>
> <mx:DataGridColumn id="detailApproved"
> headerText="Approved" dataField="approved" width="75"
> textAlign="center" editable="false"><!--
> itemRenderer="com.coachflex.components.DGCheckBox" />-->
> <mx:itemRenderer>
> <mx:Component>
> <mx:CheckBox
> selected="{data.approved}" click="data.approved=!
> data.approved;outerDocument.updateApproval();" />
> </mx:Component>
> </mx:itemRenderer>
> </mx:DataGridColumn>
> <mx:DataGridColumn headerText="Who" dataField="name"
> width="75" editable="false"/>
> <mx:DataGridColumn headerText="Reason"
> dataField="period" editable="true"/>
> </mx:columns>
> </mx:DataGrid>
>
> private function checkUser ( event: DataGridEvent ):void {
> var userUpper:String = parentApplication.userSO.data.username;
> var userLower:String = userUpper.toLowerCase();
> userUpper = userUpper.toUpperCase();
> if (event.dataField == "approved") {
> event.preventDefault();
> }
> if (userUpper == cfDetail.dataProvider[event.rowIndex]
> ['name']) {}
> else if (userLower == cfDetail.dataProvider[event.rowIndex]
> ['name']) {}
> else {
> event.preventDefault();
> }
> }
>
> public function updateApproval():void {
> if (cfDetail.selectedIndex != -1) {
> var row:int = cfDetail.selectedIndex;
> var recnum:String = cfDetail.dataProvider[row]
> ['recnum'];
> amfRegistry.updateApproved
> (recnum,parentApplication.userSO.data.user_id,cfYear.text);
> }
> }
>
> All updateApproval does is update the datasource via AMFPHP. I had
> to make the column as not editable, otherwise when you when to
click
> on the checkbox it gave me a textinput area. It still performed the
> click, but was not the desired effect. By making the column not
> editable I was able to avoid this effect.
>
> Any help will be greatly appreciated.
>
> -David
>