1 Reply Latest reply on Apr 26, 2007 10:09 AM by BiSaisei

    Validation of user inputs when using ItemRenderers in DataGrid

    bhargava.abhi
      Hi,

      I have to show multiple editable columns in a DataGrid.
      The columns may have different formats and datatypes e.g. numbers, dates, string etc.
      So I am using TextInput/DateField as a ItemRenderer inside the DataGrid. I have also set the rendererIsEditor="true".

      Now I want to apply validation to all these editable columns depending on their datatypes.
      I know I can do that by applying validators individually on each column.

      But is there a way I can use common validation for all the columns that have a similar datatype or that have the same renderer?
        • 1. Re: Validation of user inputs when using ItemRenderers in DataGrid
          BiSaisei
          You can use the itemEditEnd Event of the DataGrid for your validation. Then you can use Actionscript to make sure what the user enters is in the right format. Example:

          <mx:Script>
          <![CDATA[
          import mx.events.DataGridEvent;

          public function processEdit(event:DataGridEvent):void {
          cellValue = TextInput(event.currentTarget.itemEditorInstance).text; // the entered text
          cell = event.dataField; //the datafield attribute of the column

          // Determine if the new value is too long for nvarchar field
          if(cell == 'WLNET' && cellValue.length > 35) {
          cellValue = cellValue.substr(0,35); //shortening it for user demonstrates expected length
          TextInput(event.currentTarget.itemEditorInstance).text = cellValue;
          event.preventDefault(); // Prevent the user from removing focus, and leave the cell editor open.

          // Write a message to the errorString property.
          // This message appears when the user mouses over the editor.
          TextInput(event.currentTarget.itemEditorInstance).errorString="Entered text too long.";
          return;
          }
          }
          ]]>
          </mx:Script>

          <mx:DataGrid id="enrolled_dg" editable="true" itemEditEnd="processEdit(event);">

          I learned part of this from the Flex documentation online: Determining the reason for an itemEditEnd event