3.0 beta 2

error : My is undefined in template

Im trying to make my table editable but i keep getting the following error:My is undefined
Thanks for all the help
Here is my code:

<html>

<head>

    <title>Hardware Requests :: PHP Example</title>
    <style> body, html {margin:0px; padding: 0px; overflow: hidden;font: menu;border: none;}   </style>

    <!-- ActiveWidgets stylesheet and scripts -->
    <link href="./runtime/styles/xp/grid.css" rel="stylesheet" type="text/css" ></link>
    <script src="./runtime/lib/grid.js"></script>
     	<script src='edit.js'></script>
    <!-- ActiveWidgets PHP functions -->
    <?php include("activewidgets.php") ?>

    <!-- grid format -->

</script>

 <style>
        .active-templates-input {
            overflow: hidden;
            width: 100%;
            height: 100%;
            padding: 0px 5px;
            margin: -1px 0px;
            border: 1px solid #666;
            vertical-align: middle;
            font: menu;
            line-height: 1.4em;
        }

        .active-templates-input.gecko {
            display: block;
            margin: 0px;
        }

   </style>
    <script>

if (!window.My) My=[];
if (!My.Templates) My.Templates=[];

My.Templates.Input = Active.Templates.Text.subclass();

My.Templates.Input.create = function()
{
    var obj = this.prototype;

//    editor is not part of the template,
//    there is only one single instance of editor object.
    var editor = new Active.HTML.INPUT;
    editor.setClass("templates", "input");
    editor.setAttribute("type", "text");
    editor.setAttribute("value", function(){
        return template.getItemProperty("text");
    });

//    template variable provides temporary reference
//    to the parent template during edit mode.
    var template;

    function switchToEditMode(){
        if (template) {
            switchToTextMode()
        }
        template = this;
        template.element().style.padding = 0;
        template.element().innerHTML = editor;
        editor.element().focus();
    }

    obj.setEvent("ondblclick", switchToEditMode);

    function switchToTextMode(){
        var value =  editor.element().value;
        var originalVal = template.getItemProperty("text");

        if(originalVal != value){
            template.setItemProperty("text", value);
        }
        template.refresh();
        template = null;
    }

    editor.setEvent("onblur", switchToTextMode);
};

My.Templates.Input.create();


var myData = new array();

<?php
 include 'dbconnect.php';
    $arrayname = myData;
$name1 =  $_POST['mynames'];

 //grid object name
$name = "obj";

// SQL query
$query = "Select `Hostname` , `Spec` , Booked_By , `Project` , `Subproject` ,`Proj_Mgr`, `Dept_Mgr`, `Purpose`, `Comments`, `TestSite_Type` from `tp` where `Dept_Mgr` = '$name1'" ;


// database connection
$resultset1 = new DB();
$resultset1->DB1();
if (!$resultset1) {
   die('Invalid query: ' . mysql_error());
   }

 //query results
  $data =  $resultset1->query($query);

 while ( $row = mysql_fetch_array($data) )
{
echo "myData.push[".$row['Hostname']."]";
echo "myData.push[".$row['Spec']."]";
echo "myData.push[".$row[' Booked_By ']."]";
echo "myData.push[".$row['Project']."]";
echo "myData.push[".$row['Subproject']."]";
echo "myData.push[".$row['Proj_Mgr']."]";
echo "myData.push[".$row['Dept_Mgr']."]";
echo "myData.push[".$row['Purpose']."]";
echo " myData.push[".$row['Comments']."]";
echo " myData.push[".$row['TestSite_Type']."]";
}

?>

var myColumns = [ "Hostname", "Spec", "Booked_By", "Project", "Subproject" , "Proj_Mgr" , "Dept_Mgr" , "Purpose" ,"Comms" , "TestSite_Type" ];

</script>

</head>
<body>
<script>  // create ActiveWidgets Grid javascript object
    var obj = new Active.Controls.Grid;
    // set number of rows/columns
    obj.setRowCount(20);
    obj.setColumnCount(5);

    // provide cells and headers text
    //    create editable text template
    var templ = new My.Templates.Input;

    //    assign new template to all columns
    obj.setColumnTemplate(templ);

    //    provide methods for getting and setting data
    obj.getDataText = function(i, j){return myData[i][j]};
    obj.setDataText = function(value, i, j){myData[i][j] = value};

    obj.setColumnText(function(i){return myColumns[i]});


    //  disable arrow key nevigation
      obj.setEvent("onkeydown", null);

      //  make input box selectable
      obj.getTemplate("top").setEvent("onselectstart", obj.getEvent("onselectstart"));
      obj.setEvent("onselectstart", null);


    // set click action handler
    //obj.setAction("click", function(src){window.status = src.getProperty("item/text")});
    // write grid html to the page
    document.write(obj);

       </script>
  </body>
</html>


redchord
August 23,
Not sure, but just an idea, (missing "dot").
But then the message must say "Active is Undefinned" instead "My".
Is this???

<link href="./runtime/styles/xp/grid.css" rel="stylesheet" type="text/css" ></link> 
    <script src="./runtime/lib/grid.js"></script>


See the two "dots" before "/" in basic sample
<link href="../../runtime/styles/xp/grid.css" rel="stylesheet" type="text/css" ></link>
    <script src="../../runtime/lib/grid.js"></script>
August 23,
well it workrd b4 i changed mydata to this:


var myData = new array();

<?php
include 'dbconnect.php';
    $arrayname = myData;
$name1 =  $_POST['mynames'];

//grid object name
$name = "obj";

// SQL query
$query = "Select `Hostname` , `Spec` , Booked_By , `Project` , `Subproject` ,`Proj_Mgr`, `Dept_Mgr`, `Purpose`, `Comments`, `TestSite_Type` from `tp` where `Dept_Mgr` = '$name1'" ;


// database connection
$resultset1 = new DB();
$resultset1->DB1();
if (!$resultset1) {
   die('Invalid query: ' . mysql_error());
   }

//query results
  $data =  $resultset1->query($query);

while ( $row = mysql_fetch_array($data) )
{
echo "myData.push[".$row['Hostname']."]";
echo "myData.push[".$row['Spec']."]";
echo "myData.push[".$row[' Booked_By ']."]";
echo "myData.push[".$row['Project']."]";
echo "myData.push[".$row['Subproject']."]";
echo "myData.push[".$row['Proj_Mgr']."]";
echo "myData.push[".$row['Dept_Mgr']."]";
echo "myData.push[".$row['Purpose']."]";
echo " myData.push[".$row['Comments']."]";
echo " myData.push[".$row['TestSite_Type']."]";
}

?>



instead of sumthin like this:

var myData = [
["1","MP1", "<input type='text' class='arialfont8' name='edr1c1' value='MegaPipe 1' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr1c2' value='1' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr1c3' value='99.00' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr1c4' value='99.00' style='text-align: top; height: 30px; border-style: none;' >", "<select name='edr1c5' class='arialfont8' style='height:15px;'><option value='1'>Oregon</option></select>"],
["1","ROUTER1", "<input type='text' class='arialfont8' name='edr2c1' value='Router Rental' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr2c2' value='1' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr2c3' value='99.00' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr2c4' value='99.00' style='text-align: top; height: 30px; border-style: none;' >", "<select name='edr2c5' class='arialfont8' style='height:15px;'><option value='1'>Oregon</option></select>"],
["1","VOICE1", "<input type='text' class='arialfont8' name='edr3c1' value='Voice Line' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr3c2' value='1' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr3c3' value='99.00' style='text-align: top; height: 30px; border-style: none;' >", "<input type='text' class='arialfont8' name='edr3c4' value='99.00' style='text-align: top; height: 30px; border-style: none;' >", "<select name='edr3c5' class='arialfont8' style='height:15px;'><option value='1'>Oregon</option></select>"],
];

var myColumns = [ "ID", "Item Lookup", "Description", "Quantity", "Price", "Tax Price", "Tax Location"
];



any ideas?
August 23,
Maybe deleting last comma in the array??
style='height:15px;'><option value='1'>Oregon</option></select>"] 
];

instead of :

style='height:15px;'><option value='1'>Oregon</option></select>"], 
];



August 23,
no dats not it.

Im usin mysql database so i need 2 query the values, Is there a better way to do this :

var myData = new array();

<?php
include 'dbconnect.php';
    $arrayname = myData;
$name1 =  $_POST['mynames'];

//grid object name
$name = "obj";

// SQL query
$query = "Select `Hostname` , `Spec` , Booked_By , `Project` , `Subproject` ,`Proj_Mgr`, `Dept_Mgr`, `Purpose`, `Comments`, `TestSite_Type` from `tp` where `Dept_Mgr` = '$name1'" ;


// database connection
$resultset1 = new DB();
$resultset1->DB1();
if (!$resultset1) {
   die('Invalid query: ' . mysql_error());
   }

//query results
  $data =  $resultset1->query($query);

while ( $row = mysql_fetch_array($data) )
{
echo "myData.push[".$row['Hostname']."]";
echo "myData.push[".$row['Spec']."]";
echo "myData.push[".$row[' Booked_By ']."]";
echo "myData.push[".$row['Project']."]";
echo "myData.push[".$row['Subproject']."]";
echo "myData.push[".$row['Proj_Mgr']."]";
echo "myData.push[".$row['Dept_Mgr']."]";
echo "myData.push[".$row['Purpose']."]";
echo " myData.push[".$row['Comments']."]";
echo " myData.push[".$row['TestSite_Type']."]";
}

?>


because im not sure if its rite. heres the dbconnection.php code:

<html>

<head>
<title></title>
</head>

<body>

<?php
class DB {

function DB1() {
$this->host = "127.0.0.1";
$this->db = "test";
$this->user = "root";
$this->pass = "123456";
$this->link = mysql_connect($this->host, $this->user, $this->pass);
// echo "Connection made";
mysql_select_db($this->db);
register_shutdown_function($this->close);
}
function query($query){
$result = mysql_query($query, $this->link);

return $result;
}
function close() {
mysql_close($this->link);
}

}
?>

<?php




?>
</body>

</html>

im very new to this. Thank you for your help
redchord
August 23,
This statement will not work:
while ( $row = mysql_fetch_array($data) ) 
{ 
echo "myData.push[".$row['Hostname']."]"; 
echo "myData.push[".$row['Spec']."]"; 
echo "myData.push[".$row[' Booked_By ']."]"; 
echo "myData.push[".$row['Project']."]"; 
echo "myData.push[".$row['Subproject']."]"; 
echo "myData.push[".$row['Proj_Mgr']."]"; 
echo "myData.push[".$row['Dept_Mgr']."]"; 
echo "myData.push[".$row['Purpose']."]"; 
echo " myData.push[".$row['Comments']."]"; 
echo " myData.push[".$row['TestSite_Type']."]"; 
}


With this you are adding new rows to the array not just adding one row with many items. Try and change it to:

while ( $row = mysql_fetch_array($data) ) 
{
echo 'myData.push["'.$row['Hostname'].'","'.
.$row['Spec'].'","'.
.$row['Booked_By'].'","'.
.$row['Project'].'","'.
.$row['Subproject'].'","'.
.$row['Proj_Mgr'].'","'.
.$row['Dept_Mgr'].'","'.
.$row['Purpose'].'","'.
.$row['Comments'].'","'.
.$row['TestSite_Type'].'"'.
']';
}


I didn't test this but it should work.
Jim Hunter
August 23,
dat got rid of dat my undefined error . cheers Still not fully working . im just goin 2 run a few tests and see.
redchord
August 24,
i didnt see this syntex error;

while ( $row = mysql_fetch_array($data) )
{
echo 'myData.push["'.$row['Hostname'].'","'
.$row['Spec'].'","'
.$row['Booked_By'].'","'
.$row['Project'].'","'
.$row['Subproject'].'","'
.$row['Proj_Mgr'].'","'
.$row['Dept_Mgr'].'","'
.$row['Purpose'].'","'
.$row['Comments'].'","'
.$row['TestSite_Type'].'"'.
']';
}

i got rid of the dot at the end of each line but the My is undefined error is back. Here is my full code:

<html>

<head>

    <title>Hardware Requests :: PHP Example</title>
    <style> body, html {margin:0px; padding: 0px; overflow: hidden;font: menu;border: none;}   </style>

    <!-- ActiveWidgets stylesheet and scripts -->
    <link href="../runtime/styles/xp/grid.css" rel="stylesheet" type="text/css" ></link>
    <script src="../runtime/lib/grid.js"></script>
     	<script src='edit.js'></script>
    <!-- ActiveWidgets PHP functions -->
    <?php include("activewidgets.php") ?>

    <!-- grid format -->

</script>

 <style>
        .active-templates-input {
            overflow: hidden;
            width: 100%;
            height: 100%;
            padding: 0px 5px;
            margin: -1px 0px;
            border: 1px solid #666;
            vertical-align: middle;
            font: menu;
            line-height: 1.4em;
        }

        .active-templates-input.gecko {
            display: block;
            margin: 0px;
        }

   </style>
    <script>

if (!window.My) My=[];
if (!My.Templates) My.Templates=[];

My.Templates.Input = Active.Templates.Text.subclass();

My.Templates.Input.create = function()
{
    var obj = this.prototype;

//    editor is not part of the template,
//    there is only one single instance of editor object.
    var editor = new Active.HTML.INPUT;
    editor.setClass("templates", "input");
    editor.setAttribute("type", "text");
    editor.setAttribute("value", function(){
        return template.getItemProperty("text");
    });

//    template variable provides temporary reference
//    to the parent template during edit mode.
    var template;

    function switchToEditMode(){
        if (template) {
            switchToTextMode()
        }
        template = this;
        template.element().style.padding = 0;
        template.element().innerHTML = editor;
        editor.element().focus();
    }

    obj.setEvent("ondblclick", switchToEditMode);

    function switchToTextMode(){
        var value =  editor.element().value;
        var originalVal = template.getItemProperty("text");

        if(originalVal != value){
            template.setItemProperty("text", value);
        }
        template.refresh();
        template = null;
    }

    editor.setEvent("onblur", switchToTextMode);
};

My.Templates.Input.create();


var myData = new array();

<?php
 include 'dbconnect.php';
$name1 =  $_POST['mynames'];

 //grid object name
$name = "obj";

// SQL query
$query = "Select `Hostname` , `Spec` , Booked_By , `Project` , `Subproject` ,`Proj_Mgr`, `Dept_Mgr`, `Purpose`, `Comments`, `TestSite_Type` from `tp` where `Dept_Mgr` = '$name1'" ;


// database connection
$resultset1 = new DB();
$resultset1->DB1();
if (!$resultset1) {
   die('Invalid query: ' . mysql_error());
   }

 //query results
  $data =  $resultset1->query($query);


 while ( $row = mysql_fetch_array($data) )
{
echo 'myData.push["'.$row['Hostname'].'","'
.$row['Spec'].'","'
.$row['Booked_By'].'","'
.$row['Project'].'","'
.$row['Subproject'].'","'
.$row['Proj_Mgr'].'","'
.$row['Dept_Mgr'].'","'
.$row['Purpose'].'","'
.$row['Comments'].'","'
.$row['TestSite_Type'].'"'.
']';
}



?>

var myColumns = [ "Hostname", "Spec", "Booked_By", "Project", "Subproject" , "Proj_Mgr" , "Dept_Mgr" , "Purpose" ,"Comms" , "TestSite_Type" ];

</script>

</head>
<body>
<script>
// create ActiveWidgets Grid javascript object
    var obj = new Active.Controls.Grid;
    document.write("error not here");
    // set number of rows/columns
    obj.setRowCount(20);
    obj.setColumnCount(5);

    // provide cells and headers text
    //    create editable text template
    var templ = new My.Templates.Input;

    //    assign new template to all columns
    obj.setColumnTemplate(templ);

    //    provide methods for getting and setting data
    obj.getDataText = function(i, j){return myData[i][j]};
    obj.setDataText = function(value, i, j){myData[i][j] = value};

    obj.setColumnText(function(i){return myColumns[i]});


    //  disable arrow key nevigation
      obj.setEvent("onkeydown", null);

      //  make input box selectable
      obj.getTemplate("top").setEvent("onselectstart", obj.getEvent("onselectstart"));
      obj.setEvent("onselectstart", null);


    // set click action handler
    //obj.setAction("click", function(src){window.status = src.getProperty("item/text")});
    // write grid html to the page
    document.write(obj);

       </script>
  </body>
</html>
redchord
August 24,
it says the error is on line 118 which is

.$row['Proj_Mgr'].'","'



i dont understand
redchord
August 24,
how is the xml example usefull to me when im using a mysql database?
VERY-UPSET-DUDE
August 25,
look at this example...

http://www.poeticdata.com/griddemo/

this was my reference when i tried to may my AWgrid editable.
but be sure your data array is good.
glennlosentes
August 26,

This topic is archived.

See also:


Back to support forum

Search

Version 2

Looking for AW 2.6 ?
The old site is here.